kangsy763   4년 전

어떤 문제가 있길레 오답으로 나오는지 궁금합니다. ㅜㅜ

djm03178   4년 전

std::sort는 두 원소가 같을 때 기존의 순서를 유지해준다는 보장이 없는 unstable sort입니다. 이 때문에 "나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다."가 지켜지지 않습니다.

기존의 순서를 유지하는 조건을 비교 함수에 추가하거나 std::stable_sort를 대신 사용하면 됩니다.

kangsy763   4년 전

아 그 부분을 고민했었는데 cmp 함수를 따로 만들어서 return false 로 하면 유지되는 것 같았는데 이 부분은 의미가 없던 코드인건가요 ?

djm03178   4년 전

유지되는 것 같은 건 작은 범위에서만 시도해봐서 (작은 범위에서는 주로 삽입 정렬이 사용되므로) 유지되는 것처럼 보이는 것이고, 큰 범위에서 시도해보면 아마도 다르게 나올 것입니다. 그리고 이건 라이브러리 구현체마다도 다릅니다.

false를 리턴하는 건 그냥 "a가 b보다 작지 않다"는 의미이므로 기존의 순서가 어떻다는 걸 말하는 것과는 아무런 연관이 없습니다.

kangsy763   4년 전

아하.. 그렇군요 좋은답변 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.