본문 바로가기
코딩 테스트/프로그래머스

[ 프로그래머스 - java ] 최소직사각형 (위클리 챌린지)

by snow_hong 2022. 4. 13.


문제 분석

모든 명함을 넣을 수 있는 가장 작은 지갑을 만드는 것이 문제의 목표이다.

처음에 문제를 보았을때 가로와 세로에 틀에 있어서 문제해결이 어려웠는데 그런 거 없이 두변중에 가장 긴 부분을 가로라고 생각하고 짧은 부분을 세로라고 생각하면 쉽게 풀리는 문제입니다. 

가로 : 두 변중에서 긴 부분

세로 : 두 변중에서 짧은 부분

그림과 같이 변경 후 가로 길이와 세로 길이에서 제일 큰 부분을 찾아서 문제를 풀면 정말 간단한 문제가 된다.


풀이

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int max_v=0;
        int max_h=0;
        
        for(int i=0;i<sizes.length;i++){
         //두 변중에서 긴부분과 짧은 부분 구별해서 가로, 세로 정하기
            int v=Math.max(sizes[i][0],sizes[i][1]);
            int h=Math.min(sizes[i][0],sizes[i][1]);
            
            //여러개의 명함에서 가장 긴 가로와 세로 구하기
            max_v=Math.max(max_v,v);
            max_h=Math.max(max_h,h);
        }
        
        return answer=max_v*max_h;
    }
}
728x90

댓글