코딩 테스트

(Java) 프로그래머스 카펫

로승리 2022. 1. 16. 23:17

문제를 보고 어떻게 풀어야 할지 한참을 생각했다.

해결방법은 떠오르는데 코드로 옮기지를 못해서 너무 스트레스를 받았다.

검색을 통해 힌트를 얻었는데 고민하던 부분을 continue로 해결하는 것을 보고 좀 허무하고 반성이 되었다.


최종 코드

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

        for (int i = 1; i <= total; i++) {
            // 세로 길이
            int row = i;
            // 가로 길이
            int col = total / row;

            // 가로 길이가 세로 길이와 같거나 세로보다 길기 떄문에
            if(row > col) {
                continue;
            }
            // 가로 - 2 * 세로 - 2 가 노란색 개수이므로
            if((row - 2) * (col - 2) == yellow) {
                answer[0] = col;
                answer[1] = row;
                return answer;
            }
        }
        return answer;
    }
}