jumpingz   3달 전

원래는 이문제를 선택알고리즘을 이용해서 해결했엇는데 너무 시간이 오래걸려서 다른분들꺼 보니까 nth_element 함수를 쓰셧더라구요 그래서 저도 한번써봣는데 계속 틀렷다고 떠서..

nth_element 요소값은 블로그 막 뒤져서 맞는거 같은데 어디서 틀린건가요?? getchar_unlocked() 는 c++11 이상부터 지원된다고해서 c++14 에서 컴파일했습니다.

f52985   3달 전

1. nth_element 함수에서 2번째로 넘겨주는 인자는, k번째 원소의 위치 자체가 되어야 합니다. 따라서 arr+k가 아닌, arr+k-1을 넘겨주어야만 k번째 원소의 위치가 됩니다. (1번째 원소의 위치가 arr+0이므로)


2. 굳이 scanf를 사용하지 않고 input함수를 따로 정의해서 사용하신 이유가 있나요? 물론 사용하는 것 자체가 잘못된 것은 아니지만, 오류가 생기기 쉬우니까요. 위의 함수에서도 while(in < '0' && in > '9') 이 아니라 while(in < '0' || in > '9') 로 고쳐주어야 합니다.

jumpingz   3달 전

해당 문제를 scanf 및 cin 으로 접근하려고하니 시간초과가 뜨더군요 그래서 좀더 빠르게 입력받는 방법을 여기저기서 들은걸로 짜봣는데.. 저기서 틀렷군요.. 감사합니다

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