문제를 접했을 때, 여러 번 푼 문제임에도 불구하고 헤맸다.
이 문제는 다양한 크기의 명함을 모두 수납할 수 있는 최소 크기의 지갑을 알아내야 한다.
명함을 눕혀서 수납할 수 있기에 가로, 세로는 고정되어 있지 않다고 생각하며 풀어야한다.
가로, 세로 크기가 주어졌을 때 길이가 더 긴 쪽을 가로로 생각하고, 길이가 더 짧은 쪽을 세로로 생각하고 풀었다.
그 후 가로크기의 최댓값, 세로크기의 최댓값을 구해 곱하면 정답을 구할 수 있다.
[전체 코드]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> sizes) {
int max_w = 0;
int max_h = 0;
for (auto& s : sizes) {
int w = max(s[0], s[1]);
int h = min(s[0], s[1]);
max_w = max(max_w, w);
max_h = max(max_h, h);
}
return max_w * max_h;
}