말하는 컴공감자의 텃밭

프로그래머스 카팻 <1점> - 자바(java) Math.sqrt 본문

알고리즘/Programmers - Java

프로그래머스 카팻 <1점> - 자바(java) Math.sqrt

현콩 2023. 7. 2. 19:31
728x90

프로그래머스 카팻
간단해보이죠

문제를 처음봤을때 level2라 어떤 알고리즘으로 구성할까 싶었다.

규칙을 찾아서 해볼까~ 아니면 가로 세로만 구하면되니까 간단한 방법이 있으려나? 두가지였다.

 

가로 > 세로 규칙을 고려하고, 세로나 가로가 3보다 작으면 Yellow는 존재하지 않는다를 곱씹어주었다.

 

이후 처음 생각한것은 세로 길이에 따른 분류였다.

먼저 세로폭이 1이라면, 갈색은 노랑 * 2 + 2 + 4였다.

세로폭이 증가하면 갈색은 세로 * 2 + 가로 * 2 + 4 이다.

1*4 와 2*2, 6*2 와 3*4 는 노랑의 수가 각각 같지만 갈색의 수는 달라진다.

결국엔 총합에서 약수로 나누어 yellow와 동일하면 그놈이다 싶어  풀게 되었다.

 

중간에 바보짓해서 1시간은 잡아먹은거 같다.. 이왕할거면 각잡고 했어야했는데

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        
        int sum = brown + yellow;
        
        for (int row = 3; row <= Math.sqrt(sum); row++) { // 가로는 3부터, sum 제곱근까지.
            if (sum % row == 0) {
                int col = sum / row;
                if ((col - 2* (row - 2== yellow) { // -2 곱이 yellow와 같다면 
                    answer[0= col; 
                    answer[1= row;
                    break;
                }
            }
        }
        
        return answer;
    }
}
 
cs
728x90
Comments