본문 바로가기

Programmers/Level2

카펫

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

카펫을 둘러싼 구조가 약수의 중앙값부터 사용되는 규칙을 이용하였다.

'Programmers > Level2' 카테고리의 다른 글

위장  (0) 2021.07.23
H-Index  (0) 2021.07.22
조이스틱  (0) 2021.07.22
프린터  (0) 2021.07.21
큰 수 만들기  (0) 2021.07.21