1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import java.util.*;
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
List<Integer> list = new ArrayList<Integer>();
// 약수 구하기
int n = brown + yellow;
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
list.add(i);
}
}
list.add(n);
int mid1, mid2; // 가로, 세로
int size = list.size();
if (size % 2 == 0) {
mid1 = size / 2;
mid2 = size / 2 - 1;
} else
mid1 = mid2 = size / 2;
// 중앙 값 부터 탐색
while (mid1 < size && mid2 >= 0) {
if ((list.get(mid1) - 2) * (list.get(mid2) - 2) == yellow)
break;
mid1++;
mid2--;
}
answer[0] = list.get(mid1);
answer[1] = list.get(mid2);
return answer;
}
}
|
cs |
카펫을 둘러싼 구조가 약수의 중앙값부터 사용되는 규칙을 이용하였다.