루트 노드(사진상 1번 노드)에서 시작해서, 하나의 분기(branch)가 끝날 때까지 탐색 후 다음 분기로 넘어간다.
(== 끝을 볼 때까지 일단 냅다 하나씩 해본다.)
여기서 만약에 모든 경우의 수를 구하는 문제가 아니고,
분기 중에 아니다 싶으면(원하는게 나올 가능성이 없는 경우) 포기해야 하는 경우가 있는데,
이 때 활용해야 하는 알고리즘은 백트래킹이다.
재귀함수
나 stack
을 이용해서 구현할 수 있다.
모든 노드를 방문해야 하는 상황
가중치가 있는 상황
프로그래머스 Lv2 타겟 넘버
프로그래머스 Lv3 네트워크
백준 실버3 바이러스
루트 노드(1번)에서 시작해서 인접한 노드를 먼저 탐색한다.
Queue
를 이용하여 구현한다.
시작노드 Push, 탐색체크
Pop한 다음
아직 탐색하지 않은 인접 노드들을 Push, 탐색체크
이렇게 Queue
내내 하고 나면
전체 노드들을 인접한 순서대로 탐색할 수 있다.
최 단 거 리
참고
https://gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html
https://ko.wikipedia.org/wiki/%EA%B9%8A%EC%9D%B4_%EC%9A%B0%EC%84%A0_%ED%83%90%EC%83%89
https://ko.wikipedia.org/wiki/%EB%84%88%EB%B9%84_%EC%9A%B0%EC%84%A0_%ED%83%90%EC%83%89
https://wikidocs.net/123116