오일러 경로 완전정리

·
알고리즘/이론
프로그래머스 「여행경로」를 풀었다. ICN에서 출발해 주어진 항공권을 전부 쓰는 경로를 찾는 문제다. DFS/BFS 분류에 있는 문제니까 DFS로 파고들다가 티켓이 남은 채 막히면 되돌아오게 짰고, 통과했다.그런데 코드에 used 배열이 있고, path.pop()이 있고, if dfs(next): return True가 있다. 되돌아가기 위한 장치가 셋이나 붙어 있다는 뜻이다. 이 문제가 정말 되돌아가야만 풀리는 문제인가.아니다. 모든 간선을 한 번씩 지나는 경로에는 이름이 있고, 그 경로는 조건만 맞으면 한 번 걸어가는 것만으로 완성된다. 되돌아갈 일이 원리적으로 생기지 않는다는 보장이 있기 때문이다. 이 글은 그 보장이 무엇이고 왜 성립하는지, 그리고 그걸 아는 것과 모르는 것이 실제로 몇 배 차이가..