1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
백준에서 해당 문제를 푸는데 문자열을 그냥 정렬하는 문제였다.
근데 sort에서 자꾸 invalid comparator문제가 발생해서 알아보았다.
Sort 메서드에서 comparator로 들어오는 매개함수는 반드시 Strict Weak Ordering을 만족해야 한다. 이게 무슨말이냐면, A == B일 경우에는 A < B도 false이고 A > B도 false여야 한다는 말이다. |

위처럼 comparator를 작성해서 사용했는데, 이 코드에서는 str1 == str2인 경우에는 return false를 해주어야 한다.

정리 : compare 함수는 비교 대상이 같은 경우에는 return false를 해주어야 한다.
'코딩 > C++' 카테고리의 다른 글
[C++] Comparator 사용시 주의사항 (0) | 2021.08.17 |
---|---|
[C++] 2차원 배열 0, -1로 초기화하기 memset 메서드 사용 (0) | 2021.08.06 |
[C++] std::sort 오름차순 내림차순 정렬 (0) | 2021.07.28 |
[C++] 문자열을 공백까지 입력받는 방법 (feat. 그대로 출력하기) (0) | 2021.07.28 |
[C++] 벡터 사용 시, () 선언과 [] 선언의 차이 (0) | 2021.07.27 |