코딩테스트

[프로그래머스/Java] 최소 직사각형

데메즈 2026. 7. 8. 12:18
반응형

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

 

프로그래머스

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

programmers.co.kr

 

제미나이 풀이

class Solution {
    public int solution(int[][] sizes) {
        int maxW = 0; // 가로(더 긴 쪽) 중의 최댓값 저장
        int maxH = 0; // 세로(더 짧은 쪽) 중의 최댓값 저장
        
        for (int i = 0; i < sizes.length; i++) {
            // 그 자리에서 두 길이 중 큰 값과 작은 값을 구합니다.
            int currentMax = Math.max(sizes[i][0], sizes[i][1]);
            int currentMin = Math.min(sizes[i][0], sizes[i][1]);
            
            // 여태까지 나왔던 최댓값들과 비교해서 갱신합니다.
            maxW = Math.max(maxW, currentMax);
            maxH = Math.max(maxH, currentMin);
        }
        
        return maxW * maxH;
    }
}

 

내 풀이

import java.util.ArrayList;

class Solution {
    public int solution(int[][] sizes) {
        ArrayList<Integer> listW = new ArrayList<>();
        ArrayList<Integer> listH = new ArrayList<>();
        
        for(int i=0; i<sizes.length; i++){
            int w = sizes[i][0];
            int h = sizes[i][1];
            
            if(w>h){
                listW.add(w);
                listH.add(h);
            } else {
                listW.add(h);
                listH.add(w);
            }
        }
        int maxW = 0, maxH = 0;
        for(int w : listW){
            if(maxW < w) maxW = w;
        }
        
        for(int h : listH){
            if(maxH < h) maxH = h;
        }
        return maxW*maxH;
    }
}
반응형