코딩테스트/백준

99클럽 코테 스터디 7일차 TIL, 완전탐색(카펫)

feel2 2024. 5. 28. 18:03
반응형

1. 문제 정의

 

2. 문제 접근

 

구현 문제인듯 하다.

3. 문제 풀이

  1. 문제에 규칙을 찾는다.
  2. 규칙에 맞는 정답을 리턴한다.

4. 코드

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = {};
        
        // 1. (w,h) = (brown) + (yellow) 의 약수
        // 2. 가로 >= 3, 세로 >= 3
        // 3. 검증: (가로-2) * (세로-2) = yellow 갯수
        
        int sum = brown + yellow;
        
        for(int i = 3; i < sum; i++){
            int j = sum / i; // i * j = sum
            if(sum % i == 0 && j >= 3){
                int w = Math.max(i,j);
                int h = Math.min(i,j);
                int center = (w-2) * (h-2);
                if(center == yellow) return new int[]{w,h};
                
            }
        }
        
        return answer;
    }
}

 

5. 회고

처음에 어떻게 구현을 해야할 지 몰라 한참을 고민했다. 그래도 3개의 예제를 통해 규칙성이 보였고, 규칙과 조건을 잘 조합하여 문제가 해결되었다. 구현문제는 언제봐도 어렵다... 이게 왜 완전탐색인지는....

반응형