sibaek   1년 전

첨부된 코드에서 #### 구분선을 기준으로 위 코드는 Pypy3 제출에서 시간초과(대략 20% 정도에서), 아래 코드는 Pypy3 제출에서 "맞았습니다"가 나옵니다. 원리를 파악해봤을 때 위 코드는 방문기록용 리스트가 [[[0] * (k+1) for _ in range(m)] for _ in range(n)] 형태이고, 아래는 [[[0] * M for _ in range(N)] for k in range(K + 1)] 형태로 다르다는 점이 있습니다. 또한 queue 자료구조로 bfs 할 때 위 코드는 가장 안쪽의 튜플을 세 개의 인자로 구성했고 아래 코드는 네 개의 인자로 구성되었다는 점입니다. 이 다른 점이 어떤 영향으로 인해 실행 시간이 달라지게 되는 것인가요? 또는 이외의 다른 발견되는 차이점이 있다면 알려 주세요.

ilikerunning   2달 전

첫번째 코드에서는 

elif graph[r][c] == 1 and visited[r][c][crash] == 0 and crash < k:

두번째 코드에서는 

if A[nxt_r][nxt_c] == 1 and crash < K and not visited[crash + 1][nxt_r][nxt_c]:

로 차이가 있네요.


두번째 코드처럼 crash+1 된 

visited[crash + 1][nxt_r][nxt_c] 를 확인하고 넘어가야 합니다.

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