winstone300   2년 전

시간 초과가 뜨는데 어떻게 시간을 더 단축할 수 있는지 모르겠습니다.

접근이 잘못된 건가요?

wider93   2년 전

전체적으로 시간 초과가 날 수밖에 없는 코드입니다. 

14번 줄은 아무 이유 없이 들어가 있으므로 빼는 것이 좋습니다.

N/3과 a/=3에 모두 / 대신 //를 사용해야 합니다. 4번 줄과 맞물려 타입 변환을 반복하게 됩니다.

print를 한 글자씩 하는 것은 상수를 매우 크게 만들 수 있습니다.
리스트에 하나씩 넣어 두었다가 string.join으로 큰 스트링을 만들어 한 번에 출력하는 것이 훨씬 낫고, 굳이 한 글자씩 출력하겠다면 sys.stdout.write을 쓰는 게 좋습니다.

10, 11, 13으로 이어지는 3중 루프가 제일 문제인데, 안에서 최대 3^8 * 3^8 * 8번정도의 star 호출이 있을 것입니다. python은 느려서 억 단위 연산이 있는 코드는 시간 내에 들어오기 어렵습니다.

winstone300   2년 전

감사합니다!

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