https://school.programmers.co.kr/learn/courses/30/lessons/86491
문제
명함들의 가로길이와 세로 길이가 있을때 모든 명함이 들어갈 수있는 최소 크기의 명함 지갑을 만들어라.
입력
명함들의 사이즈가 주어진다.
sizes의 길이는 10000 이하
[w,h] 형식일때 w,h 는 각각 1000이하 자연수
출력
w x h 를 리턴한다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> sizes) {
int answer = 0;
int minw = -1; // w 의 최대 크기
int minh = -1; // h 의 최대 크기
for(int i=0;i<sizes.size();i++){
if(sizes[i][0] > sizes[i][1]){ // 만약 size의 가로가 세로보다 크다면
minw = max(sizes[i][0],minw); // size의 가로는 가로의 최대크기와 비교
minh = max(sizes[i][1],minh); // size의 세로는 세로의 최대크기와 비교
} // 이유는 가로를 세로로 눕혀서 사용할수있기때문에 가로와 세로의 구분은 중요하지는 않다.
else{ // 만약 반대의 경우
minw = max(sizes[i][1],minw); // 반대로 비교한다. 가로를 세로
minh = max(sizes[i][0],minh); // 세로를 가로와 비교한다.
}
}
answer = minw * minh; // 출력 형식에 맞춰 가장 작은 지갑의 크기를 리턴한다.
return answer;
}
'알고리즘' 카테고리의 다른 글
프로그래머스/직사각형 별찍기/cpp (0) | 2022.08.14 |
---|---|
프로그래머스 같은 숫자는 싫어 cpp (0) | 2022.08.14 |
프로그래머스 2016년 cpp (0) | 2022.08.10 |
프로그래머스 체육복 (c++) (0) | 2022.08.09 |
프로그래머스 타겟넘버 (python) (0) | 2022.08.07 |