https://programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
x = 가로, y = 세로 크기라고 하면
1. (x - 2) * (y - 2) = yellow
2. x * y = brown + yellow
가 된다.
코드
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int area = brown + yellow;
for(int i = 1; i <= area; i++){
int x = i; // 세로
int y = area / x; // 가로
if((x - 2) * (y - 2) == yellow){
answer[0] = y; // 가로 먼저 출력
answer[1] = x;
return answer;
}
}
return answer;
}
}
아주 복잡하게 풀다가.... 아차 하고 다른 사람꺼 훔쳐봤다.
가로 ≥ 세로 길이 이므로 큰 수가 먼저 나와야하는데
x = i; 라고 함으로써 x인 가로의 크기가 더 작을 때 반복문이 끝나기 때문에
다른 조건은 더 안넣어줘도 된다~
다른 사람꺼도 봤는데 이게 깔끔한 풀이인듯... 다들 똑똑하구나~
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기 for JAVA (0) | 2022.02.14 |
---|---|
[프로그래머스] 2016년 for JAVA (0) | 2022.02.14 |
[프로그래머스] 소수 찾기 for JAVA _ 완전 탐색 알고리즘 + 순열, 소수찾기 (0) | 2022.02.13 |
[프로그래머스] 모의고사 for JAVA _ 완전탐색 알고리즘 (0) | 2022.02.11 |
[프로그래머스] 타겟 넘버 for JAVA _ DFS 알고리즘 (0) | 2022.02.10 |