본문 바로가기

단편글

pair 와 sort

코딩 문제를 풀다가 나온 문제 중 하나를 어떻게 풀까 생각하다가 pair를 쓰게되었다.

 

문제가 게임에서 스테이지 별로 나오는 값을 정렬해서 출력해야하는 것이였는데, 값만 출력하면 이게 어떤 스테이지에서 나온 값인지 알 수가 없다.

 

그래서 pair를 이용하여 스테이지 번호와 값을 맵핑하여 저장하였다.

 

pair<int, float>

 

이런 식으로 앞에는 스테이지 번호, 뒤에는 값을 넣었다.

 

vector<pair<int, float>> v;

 

이것을 vector에 넣고, sort 함수를 이용하여 값에 따차 정렬한다.

 

sort(v.begin(), v.end(), sortbysecond);

 

이때, 값을 보고 정렬하기 위하여 sortbysecond 라는 함수를 선언하였다.

 

bool sortBySecond(pair<int, float> a, pair<int, float> b)
{
    if(a.second > b.second) return true;
    else if(a.second == b.second) return a.first < b.first;
    return false;
}

 

문제에 만약 값이 같을 경우, 스테이지의 번호 순서대로 정렬하는 조건이 들어가 있기 때문에 else if 넣어주었다.

'단편글' 카테고리의 다른 글

괄호와 스택  (0) 2020.07.01
BFS  (0) 2020.06.30
프로그래머스 연습 2주 후...  (0) 2020.06.29
vector 중복 제거  (0) 2020.06.15
vector 비교할 때  (0) 2020.06.11