Dev/Programmers

[프로그래머스] 카펫 (Java)

마이캣호두 2025. 1. 17. 17:01
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

Review

첫 번째 코드처럼 ㄹㅈㄷ 대충 풀려고 하다가 테케 몇 개에서 오류 떠서 수정...ㅎ 이론상으로는 완벽한 것 같은데 말이죠... 큼큼 아무튼 그래서 아래처럼 다시 풀었습니다 쉬운 문제였어요

 

 

Code

틀린 풀이)

import java.util.*;

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        
        // array에 약수를 다 넣어서 가운데 두 개를 구하고 거기에 각각 + 2
        // 약수 개수가 홀수인 경우, 짝수인 경우 나눠서 처리
        List<Integer> divisor = new ArrayList<>();
        
        for (int i = 1; i <= yellow; i++) {
            if (yellow % i == 0) {
                divisor.add(i);
            }   
        }
        
        int width = 0;
        int height = 0;
        
        if (divisor.size() % 2 == 1) {
            width = divisor.get(divisor.size() / 2);
            height = divisor.get(divisor.size() / 2);
        }
        else {
            width = divisor.get(divisor.size() / 2);
            height = divisor.get(divisor.size() / 2 - 1);
        }
        
        answer[0] = width + 2;
        answer[1] = height + 2;
        
        }
        return answer;
    }
}

 

맞은 풀이)

import java.util.*;

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        
        for (int i = 1; i <= yellow; i++) {
            if (yellow % i == 0) {
                int width = yellow / i;
                int height = i;
                
                if ((width + 2) * (height + 2) - yellow == brown) {
                    answer[0] = width + 2;
                    answer[1] = height + 2;
                    break;
                }
            }
        }
        return answer;
    }
}
반응형