인프런 커뮤니티 질문&답변

starkshn님의 프로필 이미지
starkshn

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-S

2-S 1325 질문 있습니다.

작성

·

373

·

수정됨

0

http://boj.kr/e76755768b7d48568716ed808c81ad36 문제는 풀었습니다!ㅎㅎ

다만 이해가 안가는 부분이 있는데 다 구현하고 나서 정렬할 때 cmp라는 사용자 정의 연산자를 만들어서 pair의 first값은 오름차순으로 pair의 second값은 내림차순으로 만들고 싶어서 링크의 코드 처럼 구현을 했는데 왜

bool cmp(const pair<int, int>& a, const pair<int, int>& b)

{

if (a.first == b.first)

{

return a.second > b.second; 라고하면은 second는 내림차순으로 정렬되고

}

return a.first < b.first; 라고 하면은 first값은 오름차순으로 정렬되는지

}

이해가 잘 안갑니다.

답변 1

-1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

sort를 우리가 쓸 때

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

이렇게 쓰게 되면 default로 오름차순으로 정렬이 되죠.

이 떄 sort는 comparator의 < 오퍼레이터를 기준으로 적용하여 정렬을 시킵니다.

즉, <는 오름차순, >은 내림차순으로 정렬되게 됩니다.

감사합니다.

starkshn님의 프로필 이미지
starkshn

작성한 질문수

질문하기