백트래킹(BackTracking)

DFS(깊이 우선 탐색)과 유사하지만, 가지치기 과정이 추가된다는 차이점이 존재한다.

DFS는 모든 경우(가지)를 하나씩 그리고 끝까지 탐색하는 방법으로, 답이 존재하지 않는 경우까지도 끝까지 탐색하여 비효율적인 상황을 초래할 수 있다는 단점이 존재한다.

따라서 답이 존재하지 않는 가지의 탐색을 중단하고, 다른 가지를 탐색하도록 가지치기를 하는 것이 바로 백트래킹이다.

백트래킹에서 가장 주의해야 할 부분은 방문표시이다.

가지치기를 해야하는 시점에 알맞게 방문 표시를 남겨야 하며, 또 적절한 시점에 방문 표시를 해제할 수 있어야 한다.

관련 문제

15649: N과 M(1)

15650: N과 M(2)

15651: N과 M(3)

15652: N과 M(4)

1759: 암호 만들기