bfinecpa   2년 전

우선 밑에 코드는 pypy3로 돌립니다. python은 시간초과 납니다.

pypy3에서는 시간초과는 안나지많 26프로에서 틀렸다고 나옵니다.

제 생각에는 아래의 부분이 틀렸다고 생각합니다.

어떤 노드를 방문했는데 그 노드는 방문했던 노드 입니다. 근데 그전에 이 노드를 방문했을때는 벽을 뚫고 온 값이지만 이번에는 벽을 안뚫고 온 것입니다.  예시로 값을 보여주자면 전에 방문했던 값이 10번째이고 이번에는 25번째로 왔습니다. 

이때 전에 방문값인  벽을 뚫고 와서 10번째로 온 값으로 설정해야 하는지 아니면 이번에 방문값인 안뚫고 온 25번째로 값을 설정해야하는 궁금합니다. 둘 중 마지막 노드 방문값이 더 작은값을 선택해야 하는데 그걸 고르는 방법이 따로 있을까요?

25줄 29줄 조건문에서 우선 벽을 안 뚫고 온 것을 우선시 해서 코드를 작성했습니다.

ditn258gh   2년 전

1. x,y 값이 배열 끝에 도달한 경우 bfs의 특성에 따라 최단시간임이 보장되므로 그 때 종료하면 되고 모든 부분을 방문해도 끝나지 않는다면 종료지점에 도착하지 못했다는 의미이므로 -1이겠죠

2. 애초에 벽을 뚫은 경우와 벽을 뚫지 않은 경우의 visit 배열을 나누면 구태여 값을 바꿀 이유가 없습니다. 

 두 개의 경우를 같은 배열에 둔다면 나중의 경우를 넣어도 되겠지만 이렇게 하면 굉장히 중복처리가 귀찮아지고 굳이 방문할 필요 없는 곳을 다시 방문하는 경우가 생기기 때문에 배열을 두 개 두는 편이 낫습니다.

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