개발/Algorithm

[프로그래머스] 최소 직사각형 (Java 풀이)

Dane.Kim 2023. 8. 6.

아이디어
- 배열로 받은 명함 사이즈를 긴 부분과 짧은 부분 배열 두 개로 나누어준다.

- 긴 부분에서 가장 큰 사이즈, 짧은 부분에서 가장 큰 사이즈를 구함으로써 모든 명함이 들어 갈 수 있는

사이즈를 만들 수 있게 된다.

 

풀이

 

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int[] longD = new int[sizes.length];
        int[] shortD = new int[sizes.length];
        
        //명함의 긴 부분과 짧은 부분 배열에 담기
        for(int i=0;i < sizes.length;i++){
            if(sizes[i][0]<sizes[i][1]){
                longD[i] = sizes[i][1];
                shortD[i] = sizes[i][0];
            }else{
                longD[i] = sizes[i][0];
                shortD[i] = sizes[i][1];
            }
        }
        
        //longD[마지막] => 최대값 shortD[마지막] => 최소값
        for(int j=0;j < sizes.length-1;j++){
            if(longD[j] > longD[j+1]){
                longD[j+1] = longD[j];
            }
            if(shortD[j] > shortD[j+1]){
                shortD[j+1] = shortD[j];
            }
        }
        
        answer = longD[sizes.length-1] * shortD[sizes.length-1];
        return answer;
    }
}

댓글