문제 : https://www.acmicpc.net/problem/15649
초기 구상과정
솔직히 말해서 내가 푼 게 아니다. 고민해봤지만 결국 구선생님의 도움을 받아서 이것저것 찾아봤다. 도저히 DFS와 backtracking이 이해가 되지 않아서 코드로만 이해하고 넘어가는 느낌이 든다.
코드
import sys
N, M = map(int, sys.stdin.readline().split())
def DFS():
if len(s) == M:
print(*s)
return
for i in range(1, N + 1):
if visited[i]:
continue
visited[i] = 1
s.append(i)
DFS()
s.pop()
visited[i] = 0
s = []
visited = [0] * (N + 1)
DFS()
느낀점
문제를 읽고 순열이라는 것도 알았고 알고리즘 상에서 어떻게 들어가고 모형을 만들 수는 있는데 코드로 작성하려고 하니 머리가 돌아가질 않아서 당황스럽다. 어떻게 손대야할지 막막하다.. 공부를 더 해야하나 코딩을 막무가내로 해야하나...