순열 (permutation)
서로 다른 n개중 r개를 골라 순서를 정해 나열하는 가짓수를 의미한다. nPr 로 표기한다.
순서를 고려하기 때문에 만약 [A, B, C] 리스트가 있다면 [(A,B), (A,C), (B, C), (B, A), (C, A), (C, B)]가 나오게 된다. 요소가 동일 하더라도 순서가 다르면 다른 것으로 친다.
*순서를 고려하며 중복은 허용하지 않는다.
nPr = n! / (n-r)!
python의 모듈 itertools를 통해 사용 가능하다.
from itertools import permutations
arr = ['a','b','c']
for i in permutatinos(arr,2):
print(i)
단순 import permutations일 경우 사용시 itertools.permutations(arr,2)이렇게 사용해야 한다.
총 가짓수를 구하기 위해서는 다음과 같이 사용하면 된다.
print(len(list(permutations(arr,2))))
객체의 쌍을 리스트로 변환해 그 길이를 구한 것이다.
조합 (combination)
서로 다른 n개에서 r개를 선택할 때 순서를 고려하지 않고, 중복없이 뽑을 경우의 수를 의미한다.
*순서 고려 X , 중복 허용 X
nCr = n! / (n-r)! r!
마찬가지로 모듈 itertools를 통해 임포트 한다.
from itertools import combinations
arr = ['a','b','c']
for i in combinations(arr,2):
print(i)
순열과 동일하게 총 가짓수를 구할 수 있다.
print(len(list(combinations(arr,2))))
이 두개는 전부 리턴 값이 객체가 되며 경우의 수에 대한 쌍을 튜플 형식으로 반환한다. ex) ('a', 'b')
그렇기 때문에 list() 나 tuplie()형식으로 변경해주는 것이 좋다. 단순 출력시 주소에 있는 객체라고만 나오기 때문에 원하는 값을 직접 보고 싶다면 형태를 바꿔줘야한다.
'코딩테스트' 카테고리의 다른 글
| 알고리즘 : DP(Dynamic Programming) (0) | 2024.09.03 |
|---|