yeonsoocho   2년 전


이클립스에서는 실행이 되는데 백준알고리즘에서는 제출하면 시간초과로 나옵니다.
어디서 시간초과인건가요? 정말 모르겠습니다. 도와주세요 ㅠㅠㅠㅠㅠ

bamgoesn   2년 전

알고리즘의 소요시간이 충분한지 아닌지를 판단할 때엔 반드시 입력값의 범위를 확인해야 합니다.

12행의 while문에서 최악의 경우 c는 1이고 v-a는 약 10^9이므로, 해당 while문에서 루프가 10^9회 발생할 수 있습니다. 10^9회의 연산이면 일반적으로 1초 정도 걸린다고 생각하시면 됩니다. (정확한 계산이 아닌 어림짐작용입니다)

코드를 로컬에서 실행해보고, 2 1 1000000000을 입력해보시면 알겠지만 시간이 0.15초보다는 훨씬 오래 걸립니다. 그래서 시간초과가 나오게 됩니다.

yeonsoocho   2년 전

쉬운 예시와 답변 감사합니다.

생각지도 못한 경우가 있을 수 있었네요.

혹시 저 코드를 어떻게 고치면 시간 초과를 해결할 수 있는지 알 수 있을까요?

bamgoesn   2년 전

루프에서 한 번에 시간이 얼마 걸리지도 않는 cnt++라는 연산을 했는데도 시간내로 통과가 되지 않으니, 직접 달팽이가 올라가는 모습을 시뮬레이션해서는 시간내로 통과하기 어렵다는 걸 알 수 있습니다.

달팽이를 직접 시뮬레이션하지 않고도 답을 계산할 방법이 있을지 한번 생각해보세요.

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