smg20   1년 전

일단 백준 2751번 문제를 c언어에서 제공하는 qsort함수를 사용해서 해결은 했습니다. 그리고나서 추가적으로 퀵정렬 알고리즘을 통해 직접 함수를 구현해보면서 추가적으로 공부를 하였습니다. 제가 pivot값을 중간값, 랜덤값, 첫번째값, 마지막값으로 설정하면서 제출을 해봤는데 계속 시간초과가 뜹니다. c언어에서 제공하는 qsort함수를 사용하면 맞았다고 뜨고 직접 함수를 구현해서 제출하면 틀리다고 뜨는데 왜 그런지 알려주시면 감사하겠습니다.

seawon0808   1년 전

당연히 틀렸으니까 틀렸다고 나오는 것입니다.

그리고 코드를 올려주셔야 다른 분들이 도와드릴 수 있을 것 같습니다.

smg20   1년 전

코드 올렸습니다!

djm03178   1년 전

srand 함수는 랜덤을 생성할 때마다 해야 하는 것이 아닙니다. 초기에 srand를 한 번 호출해서 seed를 설정해놓으면 그 이후에는 rand만 호출하여 랜덤 수를 뽑아낼 수 있습니다.

srand에 쓰인 time 함수는 호출 시마다 시스템 콜을 수행하기 때문에 매우 느립니다. 이 줄만 지워주면 맞습니다.

djm03178   1년 전

또한 라이브러리에 있는 qsort 함수는 이름만 퀵소트에서 따왔을 뿐 내부 구현체가 어떤 알고리즘으로 구현되어 있어야 하는지에 대해 어떠한 명세도 되어있지 않습니다. 라이브러리 구현체에 따라 일반적으로 생각하는 퀵소트와는 전혀 다르게 구성되어 있을 수 있습니다.

smg20   1년 전

아 좋은 정보 감사합니다! 랜덤에 관해서 공부좀 해야할 것 같네요!! 

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