문제
문제 풀이
카펫안 yellow 카펫이 있는 조건을 만족 할 수 있는 전체 카펫의 길이는 3이상이어야 한다.
전체 카펫의 격자의 수 brown + yellow 의 약수의 값이 전체 격자의 수를 나누었을 때 나머지가 없어야 하고 길이가 3이상이어 한다는 조건을 만족할 때 약수와 현재 반복문의 i 값을 비교하여 큰값, 작은값을 구분한다.
카펫의 가로와 세로의 조건에서 세로가 더 길어야 한다고 하였으므로 max 값을 가로로 min 값을 세로로 지정한다.
yellow 카펫의 격자 크기의 조건은 (max - 2) * (min -2) 이므로 해당 결과 값이 yellow와 같은 때 배열값을 반환해주면 된다.
나의 답안
public static int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int sum = brown + yellow;
for (int i = 3; i < sum ; i++) {
int num = sum / i;
if (sum % i == 0 && num >= 3){
int col = Math.max(i, num);
int row = Math.min(i, num);
int middle = (col - 2) * (row - 2);
if (middle == yellow){
return new int[] {col, row};
}
}
}
return answer;
}