인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

gisung2215's profile image
gisung2215

asked

Introduction to Algorithm Problem Solving for IT Employment (with C/C++): Coding Test Preparation

88. Shortest path in a maze (using BFS)

질문있습니다.

Written on

·

165

0

선생님 방문한 map 을 1로 바꾸시는데

int dx[] ={1, 0, -1, 0}
int dy[] ={0, 1, 0, -1}

0 0 1 

0 0 1

1 0 0

이 경우 (1,1)에서 (1,2),(2,1)을 차례로 방문후

1 1 1

1 0 1

1 0 0 

이 상태에서 (1,2)에서 다시 for문 돌면서 (2,2)를 1로 변경합니다.

1 1 1 

1 1 1 

1 0 0 

그럼 큐에 남아있는 (2,1)에서 (2,2)로 가는 경우가 사라지게 되는데 이 경우 무시해도 괜찮나요? 최단거리값이라 상관없는건가요? 

큐에서 pop()해서 직접 방문한것도 아니고, 큐에push()만 했는데 방문한걸로 취급(?)해도 되나해서요

질문이 엉뚱하죠 뭔가 찜찜?해서 질문드려요ㅋㅋ

강의 잘 보고 있습니다. 좋은하루되세요

코테 준비 같이 해요! C++

Answer 1

1

codingcamp님의 프로필 이미지
codingcamp
Instructor

감사합니다^^

큐를 이용한 BFS 탐색은 출발점에서 한 번 만에 갈 수 있는 곳을  큐에 다 넣고 그 다음 두 번만에 갈 수 있는 곳을 다 넣고...

이런식으로 레벨탐색을 합니다. 즉 큐에서 먼저 나온 것이 가장 최단입니다. 나중에 나온것이 같은 지점으로 갈 수 있지만 앞에 나온 것보다 거리가 같거나 아니면 더 큽니다. 그래서 나중에 나온것은 무시해도 됩니다.

gisung2215's profile image
gisung2215

asked

Ask a question