본문 바로가기

Algorithm/Programers - C++

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

문제

 

풀이 1

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

int solution(vector<vector<int>> sizes) {
    int answer = 0;
    int w =0, h = 0;
    for(int i=0; i<sizes.size(); i++){
        int max_index = max_element(sizes[i].begin(), sizes[i].end()) - sizes[i].begin();
        if(w < sizes[i][max_index]) w = sizes[i][max_index];
        if(h < sizes[i][1-max_index]) h = sizes[i][1-max_index];
    }
    
    return w * h;
}

최댓값 index를 구해서 풀이한 방법이다.

그러나 algorithm라이브러리에 최댓값, 최솟값을 비교하여 구할 수 있는 max, min함수가 있다는 것을 알게 되었다.

 

 

풀이 2

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

int solution(vector<vector<int>> sizes) {
    int answer = 0;
    int w =0, h = 0;
    for(int i=0; i<sizes.size(); i++){
        h = max(h,max(sizes[i][0],sizes[i][1]));
        w = max(w,min(sizes[i][0],sizes[i][1]));
    }
    return answer = w * h;
}

훨씬 더 코드가 깔끔해졌고 가독성도 좋아졌다!

 

max( )를 사용하면 최댓값을 

min( )를 사용하면 최솟값을 구할 수 있다.

 

 

-수정-

 


https://blockdmask.tistory.com/366

 

[C++] 최초값, 최대값 함수 min, max 에 대해서 (클래스, vector 사용법까지)

여러분 펭하펭하. BlockDMask 입니다. 오늘은 C++에서 최소값, 최대값을 구할수 있는 std::min, std::max 함수의 정의에 대해서 알아보고, 1. 기본적인 사용법 2. 클래스를 min max에 넣는 방법 3. vector에서 mi

blockdmask.tistory.com