-
[프로그래머스] 최소직사각형 c++Coding Test/programmers 2022. 8. 17. 19:50728x90
문제 설명
가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다.
모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- sizes의 길이는 1 이상 10,000 이하입니다.
- sizes의 원소는 [w, h] 형식입니다.
- w는 명함의 가로 길이를 나타냅니다.
- h는 명함의 세로 길이를 나타냅니다.
- w와 h는 1 이상 1,000 이하인 자연수입니다.
입출력 예
명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 풀이
#include <string> #include <vector> using namespace std; int solution(vector<vector<int>> sizes) { int left = 0; int right = 0; for(int i = 0; i < sizes.size(); ++i){ left = max(left, max(sizes[i][0], sizes[i][1])); right = max(right, min(sizes[i][0], sizes[i][1])); } return left * right; }
728x90'Coding Test > programmers' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 c++ (0) 2022.08.18 [프로그래머스] 로또의 최고 순위와 최저 순위 c++ (0) 2022.08.18 [프로그래머스] 신고 결과 받기 c++ (0) 2022.08.17 [프로그래머스] 같은 숫자는 싫어 c++ (0) 2022.08.01 [프로그래머스] 폰켓몬 c++ (0) 2022.08.01 - sizes의 길이는 1 이상 10,000 이하입니다.