View

😃 || 정리
완전탐색(Brute-Force Search) 알고리즘이란 이름 그대로 처음부터 끝까지 하나하나 탐색해보는 방법이다.
예를 들어 핸드폰 4자리숫자를 풀 때 0000부터 9999까지 직접 쳐보는 것을 생각하면 된다.
시간이 걸리기 때문에 탐색할 것이 적은 곳에 사용하는 것이 좋다.
그리고 시작과 끝을 고려하는 것이
메모리와 시간을 줄이는 것 모두에 좋다.

😃 || 풀이 방법

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = {};
        int carpetLen = brown + yellow;

        for(int i=1; i<= carpetLen; i++){
            if(carpetLen%i == 0){
                //전체 직사각형
                int cCol = carpetLen / i;    
                int cRow = carpetLen / col; 

                //노란색 직사각형
                int yCol = cCol - 2;
                int yRow = cRow - 2;

                if(yCol*yRow == yellow && cCol >= cRow){
                    answer = new int[]{cCol , cRow};
                    break; 
                }
            }
        }

        return answer;
    }
}
  • 갈색과 노란색을 합한 값이 가로세로를 곱한 값과 같다
  • 노란색도 직사각형 모양이다.

처음에는 가운데에 있는 노란색 직사각형을 고려하지 않아서
테스트케이스 몇개가 통과되지 않았다.
질문하기에서 힌트를 얻어 50, 22 -> {24,3} 을 테스트케이스에 추가하고 보니
노란색 직사각형을 고려하지 않아서 통과되지 않았다는 것을 알고
알고리즘을 다시 짜서 통과했다.😹

Share Link
reply
«   2024/10   »
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