문제 바로가기
처음코드(시간초과)
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;
}
}