코딩 문제를 풀다가 나온 문제 중 하나를 어떻게 풀까 생각하다가 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 |