카펫

문제


문제 풀이

카펫안 yellow 카펫이 있는 조건을 만족 할 수 있는 전체 카펫의 길이는 3이상이어야 한다. 

 

전체 카펫의 격자의 수 brown + yellow 의 약수의 값이 전체 격자의 수를 나누었을 때 나머지가 없어야 하고 길이가 3이상이어 한다는 조건을 만족할 때 약수와 현재 반복문의 i 값을 비교하여 큰값, 작은값을 구분한다. 

 

카펫의 가로와 세로의 조건에서 세로가 더 길어야 한다고 하였으므로 max 값을 가로로 min 값을 세로로 지정한다. 

 

yellow 카펫의 격자 크기의 조건은 (max - 2) * (min -2) 이므로 해당 결과 값이 yellow와 같은 때 배열값을 반환해주면 된다. 


나의 답안

public static int[] solution(int brown, int yellow) {
    int[] answer = new int[2];
    int sum = brown + yellow;

    for (int i = 3; i < sum ; i++) {
        int num = sum / i;
        if (sum % i == 0 && num >= 3){
            int col = Math.max(i, num);
            int row = Math.min(i, num);
            int middle = (col - 2) * (row - 2);

            if (middle == yellow){
                return new int[] {col, row};
            }
        }
    }

    return answer;
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

구명보트  (0) 2023.03.31
가장 큰 수  (0) 2023.03.30
영어 끝말잇기  (0) 2023.03.30
짝지어 제거하기  (0) 2023.03.30
피보나치 수  (0) 2023.03.30