문제 바로가기
처음코드(시간초과)
import java.io.*;
import java.util.*;
class Solution {
    static int min;
    static int n;
    static List<Integer> arr;
    
    public int solution(int[][] sizes) {
        n=sizes.length;
        min=Integer.MAX_VALUE-1;
        arr=new ArrayList<>();
        Subset(0,sizes);
        return min;
    }
    
    static void Subset(int idx,int[][] sizes){
        if(idx==n){
            int[][] sizes2=copy(sizes);
            for(int i:arr){
                int temp=sizes2[i][0];
                sizes2[i][0]=sizes2[i][1];
                sizes2[i][1]=temp;
            }
            int x=0;
            int y=0;
            for(int i = 0; i < n; i++){
                x = Math.max(x, sizes2[i][0]);
                y = Math.max(y, sizes2[i][1]);
            }
            min=Math.min(min,x*y);
            return;
        }
        
        Subset(idx+1,sizes);
        arr.add(idx);
        Subset(idx+1,sizes);
        arr.remove(arr.size()-1);
    }
    
    static int[][] copy(int[][] sizes){
        int[][] sizes2=new int[n][sizes.length];
        for(int i=0;i<n;i++){
            for(int j=0;j<2;j++){
                sizes2[i][j]=sizes[i][j];
            }
        }
        return sizes2;
    }
}
간단한 방법
import java.io.*;
import java.util.*;
class Solution {
    public int solution(int[][] sizes) {
        int maxH=0;
        int maxW=0;
        for(int[] size:sizes){
            int max=Math.max(size[0],size[1]);
            int min=Math.min(size[0],size[1]);
            maxH=Math.max(maxH,max);
            maxW=Math.max(maxW,min);
        }
        return maxH*maxW;
    }
}