🔑 알고리즘/백준 Python
백준15649번 파이썬 N과M #12-1) 백트래킹
Tamii
2020. 10. 19. 20:01
반응형
내 풀이
def back (d,n,m):
if d==m:
print(*ans)
return
for i in range(n):
if not visit[i]:
visit[i]=True
ans.append(i+1)
back(d+1,n,m)
ans.pop()
visit[i]=False
n,m=map(int,input().split())
visit=[False]*n
ans=[]
back(0,n,m)
정신없는 나만 알아볼 것 같은 풀이...
다른 풀이 (라이브러리 사용한 경우)
from itertools import permutations
n, m = map(int, input().split())
l = list(range(1, n + 1))
res = (list(permutations(l, m)))
for i in range(len(res)):
print(' '.join(map(str, res[i])))
permutations ( 리스트, 원소 개수)
ex) 2개의 원소 개수 묶음으로 나누어라
num=[1,2,3,4]
permutations(num,2)
-> [(1,2), (1,3),(1,4), (2,1), (2,3), (2,4) (3,1), (3,2), (3,4), (4,1), (4,2), (4,3)]