노란색 카펫으로부터 갈색 카펫을 구해야하는 문제이다.
갈색카펫의 갯수를 비교해야 할 것 같다.
노란카펫의 크기를 구하기 위해선 가로와 세로의 길이를 알아야 한다. 가로가 세로보다 항상 같거나 길므로
세로를 1씩 증가시켜가며 나눠떨어지면(노란색 갯수가 일치) 갈색카펫과 갯수를 비교한다.
if(yellow % i != 0) continue; else{ height = i; width = yellow / i; }
노란색 카펫들을 감싸고 있는 브라운 카펫의 개수를 비교한다.
상하좌우로 브라운 카펫을 덮어주고 대각선 가장자리에 하나씩 연결해주면 감쌀수 잇을 것이다.
if((2 * height) + (2 * width) + 4 == brown) break;
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int height = 0;
int width = 0;
//너비의 크기를 1부터 증가 시켜본다
for(int i = 1; i <= yellow; i++){
if(yellow % i != 0) continue; //너비가 나누어 떨어지지 않으면 길이가 아님
else{ //너비가 나누어 떨어지면 후보임
height = i; //노란 카펫의 너비
width = yellow / i; //노란 카펫의 높이
}
//상,하,좌,우,모서리 1개씩이 브라운갯수와 같으면 끝
if((2 * height) + (2 * width) + 4 == brown) break;
}
answer[0] = width + 2; //브라운 카펫의 너비
answer[1] = height + 2; //브라운 카펫의 높이
return answer;
}
}