본문 바로가기
알고리즘/프로그래머스

(LEVEL 2)프로그래머스 - 카펫(JAVA)

by 꾸준함 2023. 2. 9.

문제


입출력 예


풀이.

1. 노란색 격자가 가운데 있으려면 가로, 세로가 최소 3이상이어야 한다. ( i = 3부터 시작)

2. 3부터 시작하며 brown + yellow(sum) 의 약수를 구한다.

3. 약수이면서 3이상 일때, 각 가로, 세로의 -2 씩 한 값이 yellow랑 같을 때 answer에 넣어준다.

 


코드

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int sum = brown+yellow;
        
        for(int i=3;i<sum;i++){
            int j = sum / i;
            
            if(sum % i == 0 && j>=3){
                int col = Math.max(i,j);
                int row = Math.min(i,j);
                int center = (col-2) * (row-2);
                
                if(center == yellow){
                    answer[0] = col;
                    answer[1] = row;
                    return answer;
                }
            }
        }
        
        return answer;
    }
}