풀이 메커니즘은 다음과 같다.
- 루프를 돌면서 가로가 세로보다 크도록 바꾸기
- 가로, 세로 각각 가장 큰 수를 얻어서 두 수를 곱하기
1번을 하기 위해 루프를 돌아서 벡터들을 정렬한 다음
max_element로 가로, 세로 각각 가장 큰 수를 구했다.
int solution(vector<vector<int>> sizes) {
for (size_t i = 0; i < sizes.size(); i++)
{
sort(sizes[i].begin(), sizes[i].end());
}
int max_row = max_element(sizes.begin(), sizes.end(), [](vector<int> a, vector<int> b) { return a[1] < b[1]; })->at(1);
int max_column = max_element(sizes.begin(), sizes.end())->at(0);
return max_row * max_column;
}
루프 한 번을 돌면서 위의 메커니즘에서 1번과 2번을 전부 해결했다.
w에는 가로와 세로 중 작은 수를 넣고 h에는 큰 수를 넣는다.
그리고 max로 각각의 최대값을 구한다.
int solution(vector<vector<int>> sizes) {
int answer=0;
int w=0, h=0;
for(int i=0; i<sizes.size(); i++)
{
w=max(w,min(sizes[i][0],sizes[i][1]));
h=max(h,max(sizes[i][0],sizes[i][1]));
}
answer=w*h;
return answer;
}