Python

[Python] 순열(permutations)과 조합(combinations)

meizzi 2023. 2. 6. 15:38
728x90
반응형

순열(permutations)

  • 서로 다른 n개에서 r개를 선택할 때, 순서를 고려하여 중복 없이 뽑을 경우
  • nPr = n! / (n -r)!
    • 만일 A, B, C에서 순서를 고려하여 중복 없이 2개의 쌍을 구한다면
    • AB/AC/BA/BC/CA/CB
    • 총 6가지
  • 사용법
    • permutations(객체, r)
      • r = 반복 가능한 객체(list, tuple, 문자열) 안에서 선택할 개수
    • 조건
      • from itertools import permutations 선언
    • return
      • 객체
      • 경우의 수에 대한 쌍을 tuple 형식으로 반환
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')]

조합(combinations)

  • 서로 다른 n개에서 r개를 선택할 때, 순서를 고려하지 않고 중복 없이 뽑을 경우
  • nCr = n! / r! (n-r)!
    • 만일 A, B, C에서 순서를 고려하지 않고 중복 없이 2개의 쌍을 구한다면
    • AB/AC/BC
    • 총 3가지
  • 사용법
    • combinations(객체, r)
      • r = 반복 가능한 객체(list, tuple, 문자열) 안에서 선택할 개수
    • 조건
      • from itertools import combinations 선언
    • return
      • 객체
      • 경우의 수에 대한 쌍을 tuple 형식으로 반환
from itertools import permutations

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

 

728x90
반응형