결국 순열을 뽑으라는 문제여서, 처음에는 모듈을 쓰는 것인가 했었다.
다른 분들의 풀이를 참고하니, 대부분 DFS (Depth-First Search)를 쓰고 있었다.
드디어, 말로만 들어왔던 DFS를 쓰는 문제에 접어들었다.
이번 문제의 경우에는, 숫자가 중복되면 안 되기 때문에 출력할 값에 들어있지 않은 숫자들만 뒤에 추가하는 방식으로 DFS 함수를 구현하면 된다.
N,M = map(int,input().split())
lst = []
def dfs(N,M):
if len(lst) == M:
for i in lst:
print(i,end = " ")
print()
return
else:
for i in range(1,N+1):
if i not in lst:
lst.append(i)
dfs(N,M)
lst.pop()
dfs(N,M)
처음 문제를 접했을 때는, 다른 분의 풀이를 봐도 전혀 이해가 안 되었다.
아무래도, DFS나 BFS 이런 것들을 전혀 고민해 보지 않았던 시절이라 그런 듯하다.
이후 단계들 문제로 꽤나 단련이 되어서인지, 이제는 금방 금방 떠오르는 게 뿌듯하긴 하다.