Algorithm/Java
[프로그래머스 고득점 kit - 완전탐색] - 카펫
__hseong__
2025. 4. 30. 00:22
728x90
반응형
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = {};
int total = brown + yellow ;
for(int height=3;height<=total/height;height++){
int width = total / height;
if(total%height==0){
if((width-2)*(height-2)==yellow){
return new int[] {width,height};
}
}
}
return new int[0];
}
}
- 해당 문제의 요건을 잘 보면 무조건 가로>= 세로 관계이기 때문에 이를 잡고 조건문을 짜면되고, 잘 생각해보면 yellow 타일이 둘러쌓여있으려면 무조건 height가 3 이상이여야한다
- 일단 전체 타일 갯수를 구한 후에, for 문을 height =3 부터 전체 갯수를 height로 나눈 것보다 작거나 같을 때 까지만 수행한다.
- 그 이유는 가로 * 세로 하면 total 이 나오고, 기본적으로 세로가 가로보다 작거나 같아야 하기 때문이다.
- 그리고 최종적으로 구했다면 어떤 형태이든 격자점은 빼야돼서 최종 갯수에서 각각 2씩 빼고 곱한 것을 return 하면 yellow의 갯수가 나온다!!
728x90
반응형