코딩테스트 연습 > 완전탐색 > 최소직사각형
https://school.programmers.co.kr/learn/courses/30/lessons/86491
명함의 가로,세로가 있는 2차원 배열 sizes가 있을 때, 모든 명함을 수납할 수 있는 가장 작은 지갑을 return 하라.

문제 내용중
가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다.
부분이 있다.
해당 부분은 가로 길이와, 세로 길이를 바꿀 수 있다는 의미로 해석할 수 있다. 이를 통해, 만약 세로가 가로보다 길다면 해당 배열의 두 요소를 바꿔준 뒤, 각각 세로의 max, 가로의 max를 찾으면 된다.
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int W_max = 0;
int H_max = 0;
for(int[] s : sizes){
if(s[0] <s[1]){
int temp = s[0];
s[0] = s[1];
s[1] = temp;
}
if(W_max <= s[0]){
W_max = s[0];
}
if(H_max <= s[1]){
H_max = s[1];
}
}
System.out.println(W_max);
System.out.println(H_max);
answer = W_max * H_max;
return answer;
}
}
가로와 세로를 바꿔도 된다는 것만 주의하면 아주 쉬운 문제이다.
처음에 그 부분을 제대로 보지 않고 풀었다가, 다시 풀었다.
문제를 읽을 때 주의하면서 읽어야겠다.(쉬운 문제도)
