이번에는 저번 문제랑도 비슷한 것 같지만, 이번에는 모든 경우의 수를 출력하는 것이 목표인 문제였다.
import sys
N, M = map(int, sys.stdin.readline().split())
check_list = [False]*N
output = []
def solve(depth, N, M):
if depth == M:
print(' '.join([str(x) for x in output]))
return
for i in range(N):
output.append(i+1)
solve(depth+1, N, M)
output.pop()
solve(0, N, M)
모든 경우의 수를 출력하는 것은 생각외로 쉽다. check_list[i]=True
인것을 만들어주지 않으면 된다. 이렇게 된다면 모든 수가 False
이기 때문에, 모든 경우의 수에 대해 재귀가 계속 실행이 된다.
'알고리즘 테스트 > 백준 문제풀이 및 해설' 카테고리의 다른 글
<백준 문제풀이: 15652번> 파이썬 - N과 M(4) (0) | 2020.12.16 |
---|---|
<백준 문제풀이: 9461번> 파이썬 - 파도반 수열 (0) | 2020.12.15 |
<백준 문제풀이: 15650번> 파이썬 - N과 M(2) (0) | 2020.12.13 |
<백준 문제풀이: 15649번> 파이썬 - N과 M(1) (0) | 2020.12.12 |
<백준 문제풀이: 10814번> 파이썬 - 나이순 정렬 (0) | 2020.12.11 |