본문 바로가기
TIL

[코테연습] 카펫

by 크라00 2024. 5. 28.

오늘의 문제는 '완전탐색'에 관련한 문제이다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

사실 풀다보니, 완전탐색을 사용하기 보다는 단순히 수학적으로 계산할 수 있는 문제였다.

 

해당 문제를 풀기위해 세운 논리는 다음과 같다.

 

1. yellow 격자의 가로 x 세로를 구한다.

 => 24 => 24*1, 12*2, 8*3, 6*4  (가로의 길이가 세로의 길이보다 길때까지)

 

2. brown 은 yellow의 (가로 + 2) * (세로+2) - yellow 이다.

=> 24 => 26*3, 14*4, 10*5, 8*6 ( brown + yellow )

          => 78-24, 56-24, 50-24, 48-24

 

3. 즉, 1~yello/2 까지 yellow % i == 0 를 만족할떄, 가로는 24 / i, 세로는 i 이다.

         *  24 % 1 == 0
         *  24 % 2 == 0
         *  24 % 3 == 0
         *  24 % 4 == 0
         *  24 % 5 != 0
         *  24 % 6 == 0

4. 이때, 브라운은 yellow 의 (가로 + 2) * (세로 * 2) - 24 (yellow) 이며, 해당 해가 brown 을 만족하면 yellow 의 가로와 세로를 구할 수 있다.

 

해당 논리를 코드로 구현하면 다음과 같다.

 

public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];

        /*
         * 1. yellow 격자의 가로 x 세로를 구한다.
         * --> 24 => 24*1, 12*2, 8*3, 6*4  (가로의 길이가 세로의 길이보다 길때까지)
         * 2. brown 은 yellow의 (가로 + 2) * (세로+2) - yellow 이다.
         * --> 24 => 26*3, 14*4, 10*5, 8*6
         * -->    => 78-24, 56-24, 50-24, 48-24
         * 3. 즉 1~yello/2 까지
         *  yellow % i == 0 를 만족할떄, 가로는 24 / i, 세로는 i 이다.
         *  24 % 1 == 0
         *  24 % 2 == 0
         *  24 % 3 == 0
         *  24 % 4 == 0
         *  24 % 5 != 0
         *  24 % 6 == 0
         *
         *  이때, 브라운은 yellow 의 (가로 + 2) * (세로 * 2) - 24 (yellow) 이며, 해당 해가 brown 을 만족하면 yellow 의 가로와 세로를 구할 수 있다.
         */

        int n = yellow/2+1;
        for (int i = 1; i <= n; i++) {
            if (yellow % i == 0) {
                int col = yellow/i + 2;
                int row = i + 2;
                int mix = (col * row) - yellow;
                if (brown == mix) {
                    answer[0] = row;
                    answer[1] = col;
                }
            }
        }
        print(answer);

        return answer;
    }

'TIL' 카테고리의 다른 글

[코테연습] 타겟넘버  (0) 2024.05.30
[코테연습] 소수찾기  (0) 2024.05.29
[코테연습] H-Index  (0) 2024.05.27
[코테연습] 가장 큰 수  (0) 2024.05.26
[코테연습] smallest-number-in-infinite-set  (0) 2024.05.25