15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
<내 코드>
N, M = map(int, input().split())
#visited = [0 for _ in range(N)]
arr = []
def dfs(cnt):
if cnt == M:
print(*arr)
return
for i in range(N):
arr.append(i+1)
dfs(cnt+1) # 다음 깊이 탐색
arr.pop() # 탐사한 내용 제거
dfs(0)
앞의 (1), (2) 순열, 조합 문제랑은 다르게 같은 수 중복 제거가 없다. 중복이 허용되고 그냥 탐사한 내용만 제거해주면 간단하게 된다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 14888] 연산자 끼워넣기 - Python (백트래킹, DFS, 브루트포스) (0) | 2020.10.27 |
---|---|
[백준 15652] N과 M (4) - Python (백트래킹, DFS) (0) | 2020.10.27 |
[백준 15650] N과 M (2) - Python (백트래킹, DFS, 조합) (0) | 2020.10.26 |
[백준 15649] N과 M(1) - Python (백트래킹, DFS, 순열) (0) | 2020.10.26 |
[백준 14226] 이모티콘 - Python (BFS, DP) (0) | 2020.10.25 |