Programmers Review
[Lv 1] 최소직사각형
hanseongbugi
2024. 6. 7. 14:40
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
배열의 요소를 완전 탐색하는 문제이다.
배열의 요소는 [w, h]로 구성되어 있으며, 각 요소 중 가장 최소가 되는 가로와 세로 값을 구해 넓이를 구하는 문제이다.
배열의 요소를 회전시키며 지갑의 넓이가 최소가 되는 것을 찾아야한다.
위 말은 가로와 세로 값 중 가장 큰 값 2개를 뽑아 넓이를 구하면 안된다는 의미와 같다.
따라서 가장 큰 크기의 명함의 가로와 세로를 구하는 것이 아닌 가로가 가장 큰 명함과 세로가 가장 큰 명함을 따로 구해야한다.
배열의 요소 중 큰 값을 세로로 정하고 작은 값을 가로로 정한다면
세로 중 가장 큰 값과 가로 중 가장 큰 값을 구하면 회전의 경우를 해결할 수 있다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> sizes) {
int answer = 0;
int w = 0;
int h = 0;
for(int i = 0;i<sizes.size();i++){
int dw = sizes[i][0];
int dh = sizes[i][1];
if(dw > dh){
w = max(w,dh);
h = max(h,dw);
}
else{
w = max(w,dw);
h = max(h,dh);
}
}
answer = w * h;
return answer;
}