본문 바로가기
코딩테스트/프로그래머스

[완전탐색] 카펫 - JAVA

by 의정부핵꿀밤 2022. 5. 12.
728x90

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

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr


그리 어렵지 않았던 문제!

 

이 문제의 포인트는 안쪽에 놓이는 노란 타일의 가로 개수를 결정하는 것이다!

노란 타일의 가로와 세로 길이를 결정하면 그 떄의 갈색 타일의 개수는 노란 타일의 (가로+세로) * 2 + 4 가 된다

4를 더해주는 이유는 각 테두리의 꼭짓점에도 타일이 놓여야 하기 때문이다!

 

노란 타일의 가로 길이를 결정하는 방법은 그냥 반복문으로 1부터 노란 타일의 전체 개수까지 돌면서 나누어 떨어지면 가능한 배치인 것이다

그래서 그 때의 갈색 타일 개수를 구하고 만약 주어진 갈색 타일과 같으면 return!

 

쉽죠잉?

 

 

자바 코드)

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        
        for(int r=1;r<=yellow;r++) { // 노란 타일의 가로 개수 결정하기
            if(yellow % r == 0) {
                int col = yellow / r;
                int b = (r + col) * 2 + 4;
                if(brown == b) {
                    answer[0] = r+2;
                    answer[1] = col+2;
                }
            }
        }
        return answer;
    }
}

 

728x90

댓글