13537번 - 수열과 쿼리 1
테스트 케이스가 약한 것 같지는 않은데,
if (arr[ index ] > k) cnt ++; 같은 단순한 코드이고, C/C++이 너무 빠른 탓에,
10만 * 10만이 1.8초 안에 돌아가 통과되고 있습니다.
제 코드는 (정해인지는 모르겠습니다) 세그트리에 정렬된 리스트를 가지고, 각각의 리스트를 Merge한 후, (Merge Sort와 동일) 각각의 리스트에서 UpperBound로 이분탐색을 사용했고,
파이썬 3 3.6초, 파이파이3 2.3초로 정답을 받았습니다.
시간 제한을 1초로 줄여도 문제의 의도와 어긋나지 않을 것 같습니다.
제한을 50만에서 100만으로 늘리는 것이 더 타당하다고 생각합니다.
무슨 제한을 말하는 것인가요?
N 제한이요.
N
1초로 줄여도, 극한의 최적화를 하면 시간을 반으로 줄여서 통과될 수도 있습니다.
이것이 문제의 의도가 아니라면(그리고 아니라고 생각합니다), N 제한을 50만에서 100만으로 늘려 의도하지 않은 풀이를 확실히 막는 것이 더 좋다고 생각합니다.
지금 N제한은 10만입니다.
N이 20만이나 30만정도로 늘려졌을 때, 문제에서 지향하고 있는 풀이에서 TLE가 나지 않는다면 N제한을 늘리는 것도 좋을 수 있겠네요.
재채점했습니다.
수정했습니다.
결과적으로 N제한을 늘리지는 않으셨지만 어떤 문제든 입력 제한을 늘리는 것은 좋지 않은 것 같습니다. 새로운 문제를 만드는 거라면 상관 없지만, 기존의 코드에 대해서 재채점을 해야 하는 상황에서 동적으로 크기를 잡는 코드는 통과하고 고정 배열 10만을 잡아놓은 코드는 갑자기 20만짜리 입력에 의해 터지는 건 공정하지 않다고 생각합니다.
댓글을 작성하려면 로그인해야 합니다.
ploffer11 5년 전
테스트 케이스가 약한 것 같지는 않은데,
if (arr[ index ] > k) cnt ++; 같은 단순한 코드이고, C/C++이 너무 빠른 탓에,
10만 * 10만이 1.8초 안에 돌아가 통과되고 있습니다.
제 코드는 (정해인지는 모르겠습니다) 세그트리에 정렬된 리스트를 가지고, 각각의 리스트를 Merge한 후, (Merge Sort와 동일) 각각의 리스트에서 UpperBound로 이분탐색을 사용했고,
파이썬 3 3.6초, 파이파이3 2.3초로 정답을 받았습니다.
시간 제한을 1초로 줄여도 문제의 의도와 어긋나지 않을 것 같습니다.