프로그래머스(Programmers)
최소직사각형
cosmohoo
2021. 10. 14. 22:32
반응형
제한사항
- sizes의 길이는 1 이상 10,000 이하입니다.
- sizes의 원소는 [w, h] 형식입니다.
- w는 명함의 가로길이를 나타냅니다.
- h는 명함의 세로 길이를 나타냅니다.
- w와 h는 1 이상 1,000 이하인 자연수입니다.
입출력 예 설명
입출력 예 #1
문제 예시와 같습니다.
입출력 예 #2
명함들을 적절히 회전시켜 겹쳤을 때, 3번째 명함(가로: 8, 세로: 15)이 다른 모든 명함보다 크기가 큽니다. 따라서 지갑의 크기는 3번째 명함의 크기와 같으며, 120(=8 x 15)을 return 합니다.
입출력 예 #3
명함들을 적절히 회전시켜 겹쳤을 때, 모든 명함을 포함하는 가장 작은 지갑의 크기는 133(=19 x 7)입니다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> sizes) {
int maxWidth=0,maxHeight=0;
for(int i=0; i<sizes.size(); i++)
{
sort(sizes[i].begin(), sizes[i].end());
if(sizes[i][0] >= maxWidth)//최대가로길이보다 크면
{
maxWidth = sizes[i][0];
}
if(sizes[i][1] >= maxHeight)//최대세로길이보다 크면
{
maxHeight = sizes[i][1];
}
}
int answer = maxWidth * maxHeight;
return answer;
}
=> (가로, 세로)가 들어있는 배열을 크기 순으로 정렬합니다.
=> algorithm 헤더에 있는 sort함수를 사용하였습니다.
=> 정렬한 이후에 가로중 가장 긴 길이와 세로 중 가장 긴 길이를 추출해냅니다.
=> 가장 긴 가로 길이 (maxWidth)와 가장 긴 세로(maxHeight)를 곱하여 answer를 반환합니다.
반응형