kdr06006   4년 전

해싱초보입니다

나름대로 써봤는데 모르겠습니다

jaehoo1   4년 전

질문을 올리기 전에 질문게시판 공지글을 읽어주세요.
https://www.acmicpc.net/board/...
반례입니다
https://www.acmicpc.net/board/...

kdr06006   4년 전

@jaehoo1

네? 저거 돌려봤는데 맞게나오는거 같습니다

World

Hello

아닌가요?

djm03178   4년 전

첫째로, 해시 함수가 너무 약합니다. 충돌이 발생할 가능성이 매우 매우 높습니다. 아래와 같은 간단한 입력에서도 충돌이 발생합니다.

둘째로, strcmp는 -1, 0, 1 중 하나를 반환하는 게 아니라 음의 정수, 0, 양의 정수 중 하나를 반환합니다. 즉, 어떤 환경에서는 무조건 1을 반환하는 것 같더라도 다른 환경에서는 1이 아닌 다른 양의 정수가 반환될 수도 있습니다.

kdr06006   4년 전

@djm03178

아 단순히 *2를 하면 안되는거였군요

감사합니다!

추가적으로 strcmp에 대한 내용도 감사드립니다

jaehoo1   4년 전

아마 실행환경의 차이같군요.

https://ideone.com/bU9Xy0

ideone에서는 C언어에서 bool 자료형을 지원하지 않아, bool check→int check 로 했습니다

djm03178   4년 전

제가 언급한 strcmp의 문제인 것 같네요. == 1 대신에 > 0으로 바꾸니 잘 나옵니다.

https://ideone.com/6gWETZ

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