Tech/Python

[Python] 순열과 조합

aeightchill 2024. 5. 29. 14:42
728x90
product('ABCD', repeat = 2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
permutations('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC
combinations('ABCD', 2) AB AC AD BC BD CD
combinations_with_replacement('ABCD', 2) AA AB AC AD BB BC BD CC CD DD

 


permutations

서로 다른 n 개에서 r 개를 선택할 때 순서를 고려하여 중복없이 뽑는 경우의 수

nPr = n! / (n-r)!

 

combinations

서로 다른 n 개에서 r 개를 선택할 때 순서를 고려하지 않고 중복없이 뽑는 경우의 수

nCr = n! / r! (n-r)!

 

product

데카르트 곱


from itertools import product, permutations, combinations, combinations_with_replacement

l = 'ABCD'

# product
print("product")
for p in product(l, repeat = 2):
    print(p)
print()

# permutations
print("permutations")
for p in permutations(l, 2):
    print(p)
print()

# combinations
print("combinations")
for p in combinations(l, 2):
    print(p)
print()

# combinations_with_replacement
print("combinations_with_replacement")
for p in combinations_with_replacement(l, 2):
    print(p)
print()
# 출력

product
('A', 'A')
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'A')
('B', 'B')
('B', 'C')
('B', 'D')
('C', 'A')
('C', 'B')
('C', 'C')
('C', 'D')
('D', 'A')
('D', 'B')
('D', 'C')
('D', 'D')

permutations
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'A')
('B', 'C')
('B', 'D')
('C', 'A')
('C', 'B')
('C', 'D')
('D', 'A')
('D', 'B')
('D', 'C')

combinations
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'C')
('B', 'D')
('C', 'D')

combinations_with_replacement
('A', 'A')
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'B')
('B', 'C')
('B', 'D')
('C', 'C')
('C', 'D')
('D', 'D')
728x90