[알고리즘] 백준 2606번
문제
https://www.acmicpc.net/problem/2606
풀이
오늘도 BFS/DFS 문제를 풀어보았습니다. 사실 지금까지 BFS로만 풀어서 DFS에 대한 감을 잃을까봐 이번 문제는 DFS로 풀어보았습니다. 재귀를 이용하여 풀었는데 간만에 DFS로 시도했더니 머리가 잘 돌아가지 않는 것을 느꼈습니다. 그래서 실수도 많았고 시간도 오래걸렸습니다. 사실 로직 자체는 크게 어렵지 않았습니다. 하지만 사소한 문제들과 제가 생각하지 못한 반례가 있어서 그 부분에 대해 언급하고자 합니다.
제가 생각한 풀이 과정은 다음과 같습니다.
- 시작점(1)을 시작으로 재귀를 이용한 DFS를 사용해야겠다고 생각했습니다.
- 배열을 사용하자니 낭비되는 메모리가 많은 것 같아서
List
와ArrayList
를 사용했습니다. 이 때문에 코드가 약간 지저분해진 것도 없지 않아 있습니다. 제가 아직은 자바에 익숙하지 않기 때문인 것 같습니다. - 방문을 했거나 더는 연결된 노드가 없다면 백트래킹을 해서 돌아가야 했습니다.
다음은 저의 코드입니다.