https://school.programmers.co.kr/learn/courses/30/lessons/86491
각 원소마다 세로길이가 큰지 가로길이가 큰지 구분하여 large와 small에 넣어준 뒤 w와 h에 있는 값과 비교하여 크면 갱신해준다. 즉 가로 세로중 큰 값들 중에 가장 큰값과 작은값들 중 가장 큰값을 구하여 곱해준다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// sizes_rows는 2차원 배열 sizes의 행 길이, sizes_cols는 2차원 배열 sizes의 열 길이입니다.
int solution(int** sizes, size_t sizes_rows, size_t sizes_cols) {
int w = 0, h = 0;
for(auto i = 0; i < sizes_rows;i++)
{
auto large = (sizes[i][0] >= sizes[i][1]) ? sizes[i][0] : sizes[i][1];
auto small = (sizes[i][0] >= sizes[i][1]) ? sizes[i][1] : sizes[i][0];
w = (w >= large) ? w : large;
h = (h >= small) ? h : small;
}
return w*h;
}
#include <string>
#include <vector>
#include <iostream>
using namespace std;
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;
}
large와 small을 따로 구하지 않고 max와 min함수를 사용하여 바로바로 해주었다.