woojin_0727   3년 전


시간 초과가 나는 코드는 주석이 안되어있는 부분이고,

'''로 주석처리된 부분이 시간 초과 없이 정답으로 되는 부분입니다.

두 코드는 재귀함수, 그리고 차례대로 인구수를 구해가는 점이 같은데 왜 이렇게 다른 시간이 나오는지 궁금합니다.

preview

pypy3로 하니 둘 다 되긴 하는데 시간이 많이 차이나요

sanalnuri   3년 전

위쪽 코드는 찾으려고 하는 호실부터 좌측 하단(0층 1호실) 방향으로 순차적으로 재귀를 반복하며 값을 계산했고 이 과정에서 같은 계산을 반복하게 됩니다.

예를 들어 3층 3호실을 구하려면 다음과 같습니다. : 함수 9번 호출 중 2번 불필요한 계산 반복

3층 3호 -> 2층 1호 -> 2층 2호 -> 1층 1호 -> 1층 2호 -> 2층 3호 -> 1층 1호(반복) -> 1층 2호(반복) -> 1층 3호

아래쪽 코드의 경우 반대로 0층부터 한층 전체를 위쪽 방향으로 올라가며 계산했고 반복되는 계산이 없습니다.

예를 들어 3층 3호실을 구하려면 다음과 같습니다. : 함수 4번 호출 중 불필요한 계산 반복 없음

0층 -> 1층 -> 2층 -> 3층

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