본문 바로가기
🔑 알고리즘/백준 Python

백준15651번 파이썬 N과M 3 #13-3) 백트래킹

by Tamii 2020. 10. 20.
반응형

내 풀이

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)]

댓글