대범하게

[Python] 순열 permutations, 조합 combinations 본문

Problem Solving/Python Concepts

[Python] 순열 permutations, 조합 combinations

대범하게 2022. 9. 27. 15:13
반응형

순열과 조합을 직접 구현하려다가 구현의 벽에 부딪혔고, (ㅠㅠ)

import itertools를 이용하여 간편하게 순열과 조합을 이용할 수 있는 방법을 찾았다.

순열 permutation

순열이란 몇 개를 골라 순서를 고려해 나열한 경우의 수를 말한다.

즉, '서로 다른 n개 중 r개를 골라 순서를 정해 나열한 경우의 수'이다.

 

순열은 순서를 고려하기 때문에

[A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 이다.

즉, (A, B)와 (B, A)는 다른 것이다.

import itertools

arr = ['A', 'B', 'C']
nPr = itertools.permutations(arr, 2)
print(list(nPr))

결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

from itertools import permutations

arr = ['A', 'B', 'C']
nPr = permutations(arr, 2)
print(list(nPr))

결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

조합 combination

조합이란 '서로 다른 n개 중에서 순서에 상관없이 r개를 뽑는 경우의 수'이다.

즉, 서로 다른 n개 중 r개를 골라 순서를 정해 나열한 경우의 수이다.

 

순열은 순서를 고려하지 않기 때문에

[A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, C)] 이다.

즉, (A, B)와 (B, A)는 같은 것이다.

import itertools

arr = ['A', 'B', 'C']
nCr = itertools.combinations(arr, 2)
print(list(nCr))

결과 : [('A', 'B'), ('A', 'C'), ('B', 'C')]

itertools 모듈을 사용하여 permutations과 combinations을 사용하여 순열과 조합을 구할 수 있다.

Comments