백트래킹, 단절선 찾기, 단절점 찾기, 위상정렬, 사이클 찾기 등에 사용
DFS에 꼭 들어가야 할 6가지 요소
(순서는 상관이 없다)1. 목적지인가?
if_문을 사용
목적지라면, 재귀를 종료하도록 만듦2. 연결된 곳을 순회
for_문을 사용
갈 수 있는 가능성이 있는 모든 곳을 의미.
연결된 곳과 갈 수 있는 곳은 다르다.3. 갈 수 있는가?
if_문을 사용
연결된 곳 중에서, 갈 수 있는 곳 인지 확인한다.4. 갈 수 있으면 간다.
DFS를 호출함 (재귀함수)5. 체크인
가려고 하는 곳의 visited를 true로 만듦6. 체크아웃
갔다가 돌아오면 visited를 false로 만듦체크인과 체크아웃의 코드상의 깊이가 같아야만, 무한루프가 발생하지 않는다.
최단거리 구하기, 위상정렬
등에 사용BFS(=while문)에 꼭 들어가야 할 6가지 요소
(순서는 상관이 없다)1. Queue에서 꺼내옴
queue.pop()_을 사용
pop을 하면, 값이 사라지므로, queue.front()를 사용하여 미리 값을 담아두는 것이 필요2. 목적지인가? (굳이 사용하지 않아도 됨)
if_문을 사용
보통 최단거리를 구하는데, 목적지의 dist요소만 반환만하면 되기 때문.3. 연결된 곳을 순회
for_문을 사용4. 갈 수 있는가?
if_문을 사용5. 체크인
가려고 하는 곳의 visited를 true로 만듦6. Queue에다 넣음
queue.push()를 사용