카펫문제
구현자체는 어렵지 않고, 규칙을 발견하면 쉽다.
input으로 주어지는 것은 노란색 사각형의 총 개수(yellow
)와 갈색 사각형의 총 개수(brown
)이다.
제한사항으로 카펫의 크기는 가로>=세로라는 조건이 있기 때문에 규칙을 생각해보면 아래 그림과 같다.
이걸 구현해주면
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
for(int y = 1; y<= yellow; y++){
int x = yellow/y;
if(x<y) break;
if(check(x, y, brown)){
answer[0] = x+2;
answer[1] = y+2;
}
}
return answer;
}
public boolean check(int x, int y, int brown){
return (brown == 2*x+2*y+4);
}
}
이렇게 된다.