해당 문제는 DFS로 풀면 됩니다.
특정 조건에서 최단 경로 문제를 해결하는 Queue를 활용한 BFS와는 달리, 재귀함수를 통해 그래프의 깊은 부분을 우선 탐색하는 방법을 사용합니다.
아이디어를 자세히 풀면, DFS로 계속 큰 숫자들을 탐색하고, 만일 방문하지 않았다면 이를 리스트에 추가합니다.
또한, 재귀함수를 돌고 나서는 바로 리스트에 담았던 숫자를 빼도록 해서 언제든 비워진 리스트를 이용할 수 있도록 구현해줍니다.
마지막으로 리스트가 주어진 크기와 같아진 경우, 해당 리스트에 모든 값들을 출력하는 것으로 마무리해보았습니다.
아래와 같은 코드를 통해 DFS를 활용해보았습니다.
결과는 맞았습니다.
물론 정답 코드를 구현하기는 했지만, 솔직히 아직 DFS와 BFS에는 자신감이 많이 없는 것 같습니다.
(해당 부분은 공부가 많이 필요한 것 같습니다,,,)