jow1025   4년 전

3차원+pair형태로 q에저장하는 아이디를 모르고 다른분들이 작성한 코드들을봤는데

벽을 뚫었을떄,안뚫었을떄 이 두가지의 제한사항을담은 코드를제외하고는 전형적인bfs인데

도착지점에 도착만해도 최단거리인게 어떻게보장되나요?

즉,특정길로가서 도착햇을때의 거리값들 끼리의 min연산이필요없나요? 

clrmt   4년 전

BFS는 항상 가까운 거리 순서로 방문합니다. 경과를 보면 "거리 1로 가능한가?" - "거리 2로 가능한가?" - "거리 3으로 가능한가?" - ... 의 순서로 탐색하기 때문에 이 순서가 뒤집힐 일이 없습니다.

atomzeno   4년 전

이 문제는 여러가지 풀이가 있을수 있는데, 일단 벽을 최대 한 번밖에 못 뚫으므로 시작점에서의 어떤 경로-벽-도착점에서의 경로 이런식의 풀이도 가능합니다

다만 그것보다는 어떤 지점 [i][j]에 벽을 뚫어서 도달한 것과 벽을 안 뚫고 도달한 것으로 나누면 bfs 형식으로 쉽게 풀리긴 합니다

이해가 안되시면 DP 로 식을 써보시면은 이해가 편할 겁니다. DP 로도 풀리는 문제니까요

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