사실 이런 코드가 통과되면 안 되는데... 컴파일러가 어둠의 최적화를 한 것 같습니다.
22억 번이나 루프를 돌리는 게 0ms가 될 수가 없습니다. 그럼에도 그런 일이 벌어졌다는 건, 애초에 컴파일러가 이 루프 자체를 제거하고 이 루프의 동작을 O(1)으로 줄여내는 최적화를 수행한 거라고 보여지네요.
22억이라는 수 자체가 int의 범위를 벗어나 루프를 제대로 돌릴 수 없어서 그런 시도를 한 것 같습니다. 반면 2110000000은 int 범위에 들어오기 때문에 그냥 루프를 돌린 것 같고요.
kjs89271s 2년 전
현재 이 소스를 채점하면 맞는 코드라고 나옵니다. 하지만 for문 안의 var<=2200000000 을 2110000000으로 변경하면 시간초과로 틀렸다고 나옵니다.
분명 22억이 더 큰 범위인데도 시간초과가 나오지 않고 정답처리 되는 것은 왜 그런건가요