class Solution {
public int[] solution(int brown, int yellow) {
for (int i = 1; i <= yellow / i; i++) {
if (yellow % i != 0) continue;
int num = yellow / i;
//num+2는 갈색 블록의 가로 한 줄의 길이임
//위 아래로 두르고 있기 때문에 * 2를 해줌
//i는 그냥 * 2를 해주는데
//이유는 둘레의 길이가 아니고 블록의 개수이기 때문임
//만약 둘레의 길이였다면 세로의 길이 역시 i + 2를 해주고 * 2를 해야함
//어쨋든 계산한 것이 갈색 격자 개수와 동일하다면 끝
if ((num + 2) * 2 + i * 2 == brown) return new int[]{num+2, i+2};
}
//만들 수 없는 경우는 없지만 for문 안에서 리턴되기 때문에 그냥 임시로 만들어놓음
return new int[]{0, 0};
}
}
for (int i = 1; i <= yellow / i; i++) {
...
}
i는 노란 격자의 세로 길이이고, yellow / i 는 노란 격자의 가로 길이를 의미함
가로 길이는 세로 길이보다 크거나 같아야 한다는 조건이 있기 때문에 i의 조건이 가로보다 작거나 같도록 설정함
if (yellow % i != 0) continue;
if ((num + 2) 2 + i 2 == brown) return new int[]{num+2, i+2};