문제 조건을 보면 data[i] 중에 음수가 있을 수 있습니다. C에서 a % b 연산을 할 때 a가 음수라면 결과가 음수가 될 수 있습니다. (ex. -5 % 3 == -2) 따라서 (data[i] / tenth) % 10로 인덱스를 계산할 때 data[i]가 음수였다면 배열 인덱스 밖을 접근하게 됩니다. 이를 해결하는 가장 간단한 방법은 입력을 받을 때 모든 수에 충분히 큰 값을 더해버리는 것입니다.
그리고, 현재 66~71번째 줄에서 tenth가 max_value 이하일 동안 계속 10을 곱하는데, 여기서 오버플로우가 날 수 있습니다. (max_value가 10억일 경우, tenth가 10억일 때 while문을 한 번 더 실행하면 (10억 * 10)이 int 범위(약 21억)를 넘어가서 overflow) 따라서 모든 값을 long long으로 바꿔주어야 합니다.
+ 제가 이 두 가지를 고쳐서 내 봤더니 그래도 시간 초과가 납니다.. 다른 방법을 시도해보세요.
(C++ STL에 이 문제를 해결해주는 함수가 있긴 한데, 직접 풀어보고 싶으시다면 굳이 안 찾아보셔도 됩니다)
qktlf789456 3년 전
너무 간단해보이는 문제라 혹시나하고 quick sort 진행해서 풀었지만 역시나 시간초과되서
O(n) 인 가장빠른..? radix sort 로 했는데 왜 런타임 에러가 뜰까요!?