본문 바로가기
정리/알고리즘

완전탐색 - 카펫

by Hudini30 2022. 2. 21.

프로그래머스 (완전탐색) - 카펫

해당 문제는 yellow로 만들 수 있는 사각형의 가로 세로 길이를 구하면 해당 사각형을 감싼 brown 사각형의 가로 세로 길이를 구할 수 있습니다(yellow 가로 + 2, yellow 세로 + 2). 이를 통해 해당 사각형을 감싼 brown의 갯수를 구할 수 있고, 입력받은 brown 갯수와의 비교를 통해 문제가 원하는 brown의 가로 세로 길이를 구할 수 있습니다. 문제에 가로의 길이가 세로의 길이보다 크거나 같다는 제약조건이 있어 시작 Width가 큰것부터 작은순으로 반복문이 돌도록 하였습니다.

public int[] solution(int brown, int yellow) {
        int[] answer = {};
        for (int yellowWidth = yellow; yellowWidth > 0; yellowWidth--) {
            if(yellow % yellowWidth == 0) {
                int yellowHeight = yellow / yellowWidth;
                int brownWeight = yellowWidth + 2;
                int brownHeight = yellowHeight + 2;

                if (brownWeight * brownHeight - yellow == brown) {
                    return new int[]{brownWeight, brownHeight};
                }
            }
        }

        return answer;
    }

'정리 > 알고리즘' 카테고리의 다른 글

탐욕법 - 구명보트  (0) 2022.03.01
탐욕법 - 큰 수 만들기  (0) 2022.02.23
완전탐색 - 소수찾기  (0) 2022.02.19
완전탐색 - 모의고사  (0) 2022.02.17
정렬 - H-Index  (0) 2022.02.16

댓글