Algorithm

[Algorithm] 프로그래머스 카펫

씬프 2021. 6. 29. 17:59
반응형
 

코딩테스트 연습 - 카펫

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

programmers.co.kr

 

풀이

브라운의 개수와 옐로우의 개수가 주어졌을 때, 전체 타일의 가로, 세로와의 관계를 생각하면 답을 구할 수 있다.

1. 브라운 + 옐로우 = 가로 * 세로

2. 브라운 = (가로 + 세로) * 2 - 4  => 브라운이 카펫을 감싸고 있음

  가로 + 세로 = (브라운 + 4) / 2

 

이에 세로가 가로보다 작기 때문에 세로를 1부터 늘려가면서 해당 조건에 맞는지 확인한다.

 

전체 소스코드

class Solution {
    
    public int[] solution(int brown, int yellow) {
        int sum = (brown + 4) / 2;
        int mul = brown + yellow;
        
        int x = 1;
        int y = sum - x;
        while (true) {
            if (x * y == mul) break;
            x++;
            y = sum - x;
        }
        
        int[] answer = {y, x};
        
        return answer;
    }
}​