boringcoding   1년 전

직접 테스트 할 땐 1초도 안 걸리는데 시간 초과가 왜 뜰까요?

movegreen   1년 전

for문이 재귀적으로 계속 나타납니다. 이는 1,000,000자리 수일 때에 대해서 엄청난 계산량을 보여줍니다. 이거 때문에 걸린 듯 합니다.

boringcoding   1년 전

직접 7986705789679856986798678587765769780767978를 넣어도 바로 출력이 나와요

movegreen   1년 전

일단 저도 여러 방면으로 찾아봤으며, recursion에 대해 큰 문제가 없음을 인지하였습니다. 위에 언급했던 잘못된 언급에 사과드립니다.

먼저 python에 대한 다양한 시간 초과 케이스에 대해서 찾아봤으며, 거의 모든 시간 초과의 이유는 재귀 함수를 썼을 때 나타났습니다.

물론 재귀 함수를 이용해서 맞으신 분들도 있습니다만, pypy3을 이용해서 통과하였습니다.

이에 대한 이유를 찾아봤는데, python 자체가 느리다는 말로 요약이 가능한 것 같습니다. (...)

실제로 python으로 PS 할 때 하면 안 되는 행동 중 하나가 재귀 함수 사용이라고 합니다. (물론 재귀 밖에 안되는 스킬에는 써야합니다)

while문 같은 반복문보다 최소 2배 이상 걸린다고 합니다.

즉, 되도록이면 반복문으로 짤 수 있는 것을 재귀 함수로 짜지 말라는 뜻으로 해석해도 되겠습니다.

따라서 pypy3으로 돌린 결과, 틀렸습니다가 나왔습니다.

한 자릿수에 대한 처리가 제대로 되지 않았습니다. (결국 코드에 문제가 존재했습니다...)

따라서 재귀 함수로 계속 짜고 싶으시다면 현 코드에서 한 자릿수에 대해서도 적용 가능하게 짜되 pypy3으로 제출하시기 바랍니다.

boringcoding   1년 전

한 자릿수 부분 수정하고 pypy로 하니 잘 되네요 감사합니다

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