본문 바로가기
Coding Test/Programmers

[프로그래머스] 카펫 [JAVA(자바)]

‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀

문제 👉 <코딩테스트 연습 - 카펫 | 프로그래머스>

1. 문제

갈색 격자와 노란색 격자의 수를 통해 카펫의 가로/ 세로 크기를 return 하라.

갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.

노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.

카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

2. 풀이

완전탐색 을 이용한 문제 풀이

  1. 카펫의 가로 길이 < 갈색 격자의 개수
  2. 노락색 격자 >= 1 이기 때문에 카펫의 세로 길이 >= 3
  3. 총 격자의 개수를 카펫의 세로 길이로 나누었을 때 나머지가 있으면 안된다. (격자는 자연수)

3. 코드

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

        for (int width=3; width<brown; width++) {
            if (blocks % width != 0) { continue; }
            // 노란색(내부) 격자는 3보다 크거나 같고 가로는 세로보다 크거나 같다.
            int height = blocks / width;
            if (height < 3 || width < height) { continue; }
            // 노란색(내부) 격자 개수 확인
            int insideBlocks = (width-2) * (height-2);
            if (insideBlocks == yellow) {
                answer[0] = width;
                answer[1] = height;
                break;
            }
        }

        return answer;
    }
}


References


🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋

댓글