본문 바로가기

개발/🎸기타

[Python] combinations 사용해서 경우의 수 구하기

n 개중 r개를 뽑는 경우의 수를 구해야 할 때, 

itertoos 모듈의 combinations 기능을 이용하면 간단하게 구현할 수 있다!

 

from itertools import combinations

 

일단 요거 import 하고, 

삼겹살 먹고싶으니까 같이 먹을 재료들을 담은 리스트 test를 만들고, 

자취생이라 여유가 없으니 4개 정도만 골라서 먹는다고 해보자. 

 

test = ["마늘","쌈장","와사비","깻잎","상추","소금","쌈무"]
com = list(combinations(test,4))

for i in com:
    print(i)

 

combinations를 사용해 test 중 4개를 조합한 경우의 수를 리스트 com에 담고 하나씩 출력하면

 

 

출력결과

('마늘', '쌈장', '와사비', '깻잎')
('마늘', '쌈장', '와사비', '상추')
('마늘', '쌈장', '와사비', '소금')
('마늘', '쌈장', '와사비', '쌈무')
('마늘', '쌈장', '깻잎', '상추')
('마늘', '쌈장', '깻잎', '소금')
('마늘', '쌈장', '깻잎', '쌈무')
('마늘', '쌈장', '상추', '소금')
('마늘', '쌈장', '상추', '쌈무')
('마늘', '쌈장', '소금', '쌈무')
('마늘', '와사비', '깻잎', '상추')
('마늘', '와사비', '깻잎', '소금')
('마늘', '와사비', '깻잎', '쌈무')
('마늘', '와사비', '상추', '소금')
('마늘', '와사비', '상추', '쌈무')
('마늘', '와사비', '소금', '쌈무')
('마늘', '깻잎', '상추', '소금')
('마늘', '깻잎', '상추', '쌈무')
('마늘', '깻잎', '소금', '쌈무')
('마늘', '상추', '소금', '쌈무')
('쌈장', '와사비', '깻잎', '상추')
('쌈장', '와사비', '깻잎', '소금')
('쌈장', '와사비', '깻잎', '쌈무')
('쌈장', '와사비', '상추', '소금')
('쌈장', '와사비', '상추', '쌈무')
('쌈장', '와사비', '소금', '쌈무')
('쌈장', '깻잎', '상추', '소금')
('쌈장', '깻잎', '상추', '쌈무')
('쌈장', '깻잎', '소금', '쌈무')
('쌈장', '상추', '소금', '쌈무')
('와사비', '깻잎', '상추', '소금')
('와사비', '깻잎', '상추', '쌈무')
('와사비', '깻잎', '소금', '쌈무')
('와사비', '상추', '소금', '쌈무')
('깻잎', '상추', '소금', '쌈무')

 

이 외에도 순서를 고려한 경우의 수를 구하려면

combinations 말고 permutations 를 사용할 수 있다.