본문 바로가기
알고리즘

[알고리즘] pair

by keel_im 2020. 3. 21.
반응형

pair, sort 를 사용하기 

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

int main(){
    vector<pair<int, int>> vc;
    for (int i = 0; i < 5; i++) {
     vc.push_back(make_pair(1, 5));
     vc.push_back(make_pair(1, 3));
     vc.push_back(make_pair(2, 4));
     vc.push_back(make_pair(2, 3));
     vc.push_back(make_pair(3, 3));
     vc.push_back(make_pair(3, 2));
     vc.push_back(make_pair(4, 2));
     vc.push_back(make_pair(5, 1));
    }

    sort(vc.begin(), vc.end()); // 오름차순 정렬
    sort(vc.begin(), vc.end(), greater<>()); //내림차순 정렬
    return 0;
}

bool compare(pair<int, int> a, pair<int, int> b){
    if(a.first==b.first){ // pair first가 같다면
        return a.second>b.second; // 두번 째로 정렬 (내림차순)
    }
    return a.first>b.first; (내림 차순)
}

// 1 2 2 4     --> 4 2 2 1
// 1 7 3 4     --> 4 7 3 1


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

int main(){
    vector<pair<int, int>> vc;
    for (int i = 0; i < 5; i++) {
     vc.push_back(make_pair(1, 5));
    }
    int x = vc[0].first;
    int y = vc[0].second;

    int x1, x2;
    tie(x1, x2) = vc[0];

    return 0;
}

first, second 키워드 없이 #include <tuple> 로 tie 함수로 묶어주면 깔끔하게 정리

반응형

댓글