본문 바로가기

⏳ 알고리즘/python 알고리즘 개념

순열과 조합

목차

  • 순열
  • 중복순열
  • 조합
  • 중복 조합

 

순열

# permutations 이용

from itertools import permutations

items = ['A', 'B', 'C']
for i in range(1, len(items)):
    print(list(permutations(items)))
    
print('--------------------------------')

for i in range(1, len(items)):
    print(list(permutations(items, 2))) #2개의 원소를 가지고 순열을 만듦
출력 〉 [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
--------------------------------
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

 

중복순열

# product 이용

from itertools import product

#반복 가능한 객체 여러개 가능
for i in product([1, 2, 3], 'ab'):
    print(i)
    
#repeat 지정
for i in product([1, 2, 3], repeat = 2):
    print(i)
출력 〉 (1, 'a')
(1, 'b')
(2, 'a')
(2, 'b')
(3, 'a')
(3, 'b')
------------------------------
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)

 

순열

# combinations 이용

from itertools import combinations

#개수 지정
items = ['A', 'B', 'C']
for i in range(1, len(items)):
    print(list(combinations(items, 2)))
출력 〉 [('A', 'B'), ('A', 'C'), ('B', 'C')]
[('A', 'B'), ('A', 'C'), ('B', 'C')]

 

중복 조합

# combinations_with_replacement 이용

from itertools import combinations_with_replacement as c

#개수 지정
for i in c([1, 2, 3, 4], 2):
    print(i)
출력 〉 (1, 1)
(1, 2)
(1, 3)
(1, 4)
(2, 2)
(2, 3)
(2, 4)
(3, 3)
(3, 4)
(4, 4)