simm4256   7년 전

먼저 정수를 전부 찾아서 string 형태로 벡터에 넣은 후

cmp를 이용해 sort했습니다.

예외 처리 다 해준 것 같은데

WR 7% 뜨네요...

어디서 틀린걸까요..?

chogahui05   7년 전

반례 테케 들어드릴게요.

문제를 잘못 읽으신 거 같습니다. 숫자를 모두 다 찾고 비 내림차순으로 출력하라고 문제에 나와 있어요.

simm4256   7년 전

음... 비내림차순이 a <= b <= c <= d 순서로 나열하는거 아닌가요?

들어주신 예시에 있는 숫자들이

43, 2, 0, 20, 2, 231233, 234, 35968~~37

8개 아닌가요??

제 코드에서는 이렇게 나오는데..

chogahui05   7년 전

wandbox에서는 다르게 나오더라고요.

simm4256   7년 전

아... 혹시 cmp쪽 문제일까요?

VS상에서만 돌아가는 코드인가본데 어느 부분이 표준이 아닌건지 모르겠네요 ㅠㅠ

simm4256   7년 전

혹시 테스트하신 환경에선 답이 어떻게 출력되나요?

chogahui05   7년 전

이렇게 출력됩니다.

알고리즘은 맞은 거 같습니다. 딱히 제가 설명할 부분이 없어 보입니다. 0 처리도 잘 하신 거 같으시고요.

cmp쪽 문제가 아닐까 생각이 드네요..

simm4256   7년 전

cmp함수를 이렇게 바꿨더니 맞았습니다 -_-;;

도대체 기존거랑 뭐가 다른지 모르겠네요

애초에 string::compare 함수의 로직 자체가 제가 쓴거랑 같은 거라고 알고 있는데

simm4256   7년 전

무튼 도움 주신거 정말 감사합니다.

위에껀 왜 안된건지 레퍼런스좀 찾아봐야겠습니다.

chogahui05   7년 전

compare 함수 리턴값이 -1, 1이 아닙니다.

두 문자열이 다를 때는 양수, 음수로 리턴됩니다. 로직 자체는 똑같습니다.


그래서 보통. strcmp류나 compare 함수로 두 문자열을 검사할 때 (사전순으로 앞섰는지, 뒤에 있는지)

이런 식으로 코딩을 합니다.


simm4256   7년 전

아 정말 감사합니다!

레퍼런스에도 뻔히 <0, >0이라고 적혀있는데 제가 멍청했네요 ;

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