🔑 알고리즘/백준 Python
백준15651번 파이썬 N과M 3 #13-3) 백트래킹
Tamii
2020. 10. 20. 18:52
반응형
내 풀이
def back(d,n,m):
if d==m:
print(*ans)
return
for i in range(n):
if not visit[i]:
ans.append(i+1)
back(d+1,n,m)
visit[i]=False
ans.pop()
if __name__=='__main__':
n,m=map(int,input().split())
ans=[]
visit=[False]*n
back(0,n,m)
라이브러리 사용한 경우
from itertools import product
n,m=map(int,input().split())
num=[] #n까지의 숫자
nnum=[] #m개의 nnum
ans=[] #nnum안의 list 모든 조합
for i in range(n):
num.append(i+1)
for k in range(m):
nnum.append(num)
ans=list(product(*nnum))
for i in ans:
print(*i)
for i in range(len(ans)):
print(' '.join(ans[i]))
a=[1,2,3]
하나의 리스트 모든 조합 계산
from itertools import __________
list( permutations(a,2) )
->[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
list( combinations(a,2) )
->[(1, 2), (1, 3), (2, 3)]
두개의 리스트에서 모든 조합을 계산할때
list( product (*a) )
->[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]