백준/문제풀이_python
15651 N과M(3) _python
휴대용치즈
2022. 10. 17. 03:34
https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
12개의 비슷한 문제가 있는 문제 (1)~(12)
문제 접근
백트래킹
문제를 읽어보면 끝자리를 계속 바꿔나가니 스택으로 접근하기 가장 알맞아보인다.
스택으로 접근하는데 모든경우를 탐색한다는 것은 dfs를 사용하면 쉽게 풀린다.
N과M(1)과 다른점은 방문했는지 체크를 안해도 된다.
코드
import sys
input = sys.stdin.readline
"""
"""
N, M = map(int,input().split())
arr = []
def dfs():
if len(arr)==M:
print(*arr)
return
for i in range(1,N+1):
arr.append(i)
dfs()
arr.pop()
dfs()