초기상태 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 |