본문 바로가기
알고리즘/프로그래머스

알고리즘(C++) / 프로그래머스 위클리챌린지 : 최소직사각형

by clean_h 2021. 9. 27.
728x90

위클리챌린지 : 최소직사각형

https://programmers.co.kr/learn/courses/30/lessons/86491?language=cpp 

 

코딩테스트 연습 - 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

 

코드

//프로그래머스 최소직사각형
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<vector<int>> sizes) {
    int answer = 0;

    int max_col = 0;
    int max_row = 0;
    for (int i = 0; i < sizes.size(); i++) {
        max_col = max(max_col, min(sizes[i][0], sizes[i][1]));
        max_row = max(max_row, max(sizes[i][0], sizes[i][1]));
    }

    answer = max_col * max_row;

    return answer;
}

int main() {
    vector<vector<int>> sizes = { {60,50}, {30,70}, {60,30}, {80,40} };
    cout << solution(sizes) << "\n";
    return 0;
}

 

고찰

걸린시간 : 10분

문제를 보고 바로 어떻게 풀어야할지 생각나지 않았지만 다시 문제를 읽고 생각해보니 풀이가 떠올랐다. 처음 구현하였을때는 가로 길이가 길고 세로길이는 짧도록 정렬을 한 후 가로 길이에서 가장 긴 길이, 세로 길이에서 가장 긴 길이를 구하였지만 다른 사람의 풀이는 정렬을 굳이하지 않고 가로 길이 세로 길이 중 짧은 거 중에서 가장 긴 길이, 가로 길이 세로 길이 중 긴 거 중에서 가장 긴 길이 하여 값을 구할 수 있었다.

 

728x90

댓글