from collections import deque
N, M = map(int, input().split())
stack = deque()
def tracking(startn):
if len(stack) == M:
for i in stack:
print(i, end=' ')
print()
for i in range(startn+1, N+1):
stack.append(i)
tracking(i)
stack.pop()
for i in range(1, N+1):
stack.append(i)
tracking(i)
stack.pop()
15649
번 이랑 너무 비슷해서 어렵지 않았다.
시작 지점을 밖으로 뻇는데 안으로 넣는 것이 더 나은 것 같다.
from collections import deque
N, M = map(int, input().split())
stack = deque()
def tracking(startn):
if len(stack) == M:
print(' '.join(map(str, stack)))
return
for i in range(startn, N+1):
if i not in stack:
stack.append(i)
tracking(i+1)
stack.pop()
tracking(1)
조합으로된 풀이도 있었다.
파이썬 itertools.combinations( [리스트] , M )
은 내부에 튜플형태로 되어있었다.
import itertools
N, M = map(int, input().split())
arr = list(itertools.combinations([i for i in range(1, N+1)], M))
print(arr)
for i in arr:
answer = ""
for j in i:
answer += str(j)
answer += " "
print(answer)