Programming Solve/프로그래머스

프로그래머스 - 위클리 챌린지 8주차, 최소직사각형 / C++

msm1029 2021. 10. 5. 00:30
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/86491

 

코딩테스트 연습 - 8주차

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr

 

문제 풀이

카드의 긴 부분을 가로 쪽으로 정리하고 카드의 짧은 부분을 세로 쪽으로 정리하여 그 중 가장 큰 가로값, 세로값을 구하여 넓이를 return 하면 된다. 실제 카드를 정리한다고 생각하면 아이디어를 떠올리기 쉽다. 크기가 다른 명함이 여러 개가 있을 때, 대부분 가로가 길기 때문에 눕혀서 정리한다.

 

소스 코드

#include <bits/stdc++.h>
using namespace std;

int solution(vector<vector<int>> sizes) {
    int answer = 0;
    int maxWidth = 0, maxHeight = 0;
    
    for(int i=0; i<sizes.size(); i++){
        if(sizes[i][0] < sizes[i][1]){
            int tmp = sizes[i][0];
            sizes[i][0] = sizes[i][1];
            sizes[i][1] = tmp;
        }
        
        maxWidth = max(sizes[i][0], maxWidth);
        maxHeight = max(sizes[i][1], maxHeight);
    }
    
    answer = maxWidth * maxHeight;
    
    return answer;
}

 

반응형