Algorithms/- 프로그래머스

프로그래머스 - 최소직사각형 [자바]

자굿 2022. 1. 31. 02:59
 

코딩테스트 연습 - 최소직사각형

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr

정답

import java.util.*;

class Solution {
    public int solution(int[][] sizes) {
        /*
            적절히 돌려서 겹친다고 생각하고
            위에서 내려다 보았을 때 면적을 구하면 된다.
        */

        //가로에 긴쪽으로 정렬하고 가장 큰 수들을 곱해주면 면적이 나온다.
        for(int[] size : sizes){
            Arrays.sort(size);
        }

        int maxW = 0;
        int maxH = 0;
        for(int[] size : sizes){
            int w = size[0];
            int h = size[1];

            if(w > maxW){
                maxW = w;
            }
            if(h > maxH){
                maxH = h;
            }
        }


        return maxW * maxH;        
    }
}

분석

  • 한쪽으로 정렬 후 겹쳐있을때 위에서 보는 면적을 구한다고 생각하면 쉽게 구할 수 있다.
반응형