본문 바로가기
컴퓨터/Algorithm

BFS

by 빵케잌 2019. 11. 17.

초기상태 s를  enqueue하는 것으로 시작.

while(!QEmpty)

{

D= Dequeue // 하나 뽑아서

for(All case)//발전 가능한 모든 상태

if(Isavail) // 발전가능하면

Enqueue
}

Dest 방문 체크는 InQueue, Dequeue 둘 중에 아무데서나 가능함.

방문 체크는 InQueue에서 무조건. 함수 안에서 할 수도 있음

 

Tip1) 2차원배열 입력 받을 때 %1d 하면 숫자 하나만 읽음 

Tip2) 배열을 1,1부터 받으면 배열 외곽은 0으로 static 자동 되므로 가능

Tip3) 미로 문제에서 0, 1을 반전 시키고 싶으면 ^ 연산자 -> static 배열에서 0이 갈수 없는 곳이므로, 예외처리에 유리

Tip4) 방문시 test_case 번호로 하면 방문배열 init 안해도됨

Tip5) BFS 를 함수에서 짜면, 목적지 도착시 바로 return 시키면 됨.

Tip6) 최소비용 문제의 경우, 힙을 쓰면 재방문 안해도 됨.(비용이 음수면 안 됨) 속도 빠름.

Tip7) 이동 간에 가중치까지 있을 땐 힙을 쓰더라도 재방문 해야함.

+ 구현이 복잡할 땐 직관적인코드를 짜야 머리가 덜아픔 

'컴퓨터 > Algorithm' 카테고리의 다른 글

더블 링크드리스트  (0) 2019.12.21
배열 기반 링크드리스트(myalloc)  (0) 2019.12.21
자료형 별 표현 크기  (0) 2019.12.16
DFS  (0) 2019.11.17
병합 정렬(Merge Sort)  (0) 2019.11.17