sm 기술 블로그
119. 15650(N과M (3)) 본문
N, M = map(int, input().split())
S = []
def DFS():
if len(S) == M:
print(" ".join(map(str, S)))
return
for i in range(1, N+1):
S.append(i)
DFS()
S.pop()
DFS()
문제요약
DFS를 이용하여 백트래킹을 해보아라.
설명
DFS와 백트래킹에 대한 개념은 아래를 참고하자.
https://smhope.tistory.com/309
백트래킹
백트래킹 더 이상 나아갈 수 없는 상황에서 그 이전 단계로 복귀하는 과정 모든 경우의 수를 전부 고려하는 알고리즘이다. 트리 탐색 알고리즘이라고 봐도 무방하며 방식에 따라 깊이우선탐색 (
smhope.tistory.com
https://smhope.tistory.com/307
깊이 우선 탐색(DFS)
깊이 우선 탐색(DFS) -> 스택 사용 (재귀 이용 -> 재귀 자체가 스택임) 루트노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 특징 깊이 우선 탐색(DFS) 에 비해서
smhope.tistory.com
이번 문제는 모든 곳의 모든 경우의 수를 탐색한다.
때문에 조건 없이 1부터 재귀를 계속 돌려준다면, 크게 어렵지 않게 문제를 풀 수 있다.
'문제 > 백준_파이썬' 카테고리의 다른 글
121. 9663(N-Queen) (0) | 2022.06.29 |
---|---|
120. 15650(N과M (4)) (0) | 2022.06.29 |
118. 15650(N과M (2)) (0) | 2022.06.29 |
117. 15649( N과M(1) ) (0) | 2022.06.28 |
116. 2004(조합 0의 개수) (0) | 2022.06.27 |
Comments