[프로그래머스] 최소 직사각형 - c++

삼식이·2025년 10월 10일

알고리즘

목록 보기
82/84

최소 직사각형

문제를 접했을 때, 여러 번 푼 문제임에도 불구하고 헤맸다.
이 문제는 다양한 크기의 명함을 모두 수납할 수 있는 최소 크기의 지갑을 알아내야 한다.

명함을 눕혀서 수납할 수 있기에 가로, 세로는 고정되어 있지 않다고 생각하며 풀어야한다.

가로, 세로 크기가 주어졌을 때 길이가 더 긴 쪽을 가로로 생각하고, 길이가 더 짧은 쪽을 세로로 생각하고 풀었다.

그 후 가로크기의 최댓값, 세로크기의 최댓값을 구해 곱하면 정답을 구할 수 있다.

[전체 코드]

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<vector<int>> sizes) {
    int max_w = 0;
    int max_h = 0;
    
    for (auto& s : sizes) {
        int w = max(s[0], s[1]);
        int h = min(s[0], s[1]);
        max_w = max(max_w, w);
        max_h = max(max_h, h);
    }
    
    return max_w * max_h;
}

0개의 댓글