[Python] 순열, 조합, 중복순열, 중복조합 뽀개기

PhilAI·2023년 7월 31일
0

안녕하세요! 이번 글에서는 파이썬을 이용하여 순열과 조합을 계산하는 방법에 대해 알아보겠습니다. 순열과 조합은 조합론(Combinatorics)에서 중요한 개념으로, 원소들을 다양한 방법으로 나열하거나 묶어서 계산하는 데 사용됩니다. 파이썬을 통해 간단하게 순열과 조합을 계산하는 방법을 소개하겠습니다.

순열(Permutation)

순열은 서로 다른 n개의 원소 중에서 r개의 원소를 순서대로 뽑아 나열하는 방법의 수를 말합니다. 파이썬에서는 itertools 모듈의 permutations 함수를 사용하여 순열을 계산할 수 있습니다.

예제를 통해 순열 계산 방법을 알아보겠습니다. 다음은 3개의 원소('A', 'B', 'C') 중에서 2개의 원소를 뽑아 나열하는 모든 경우의 수를 구하는 코드입니다.

import itertools

elements = ['A', 'B', 'C']
r = 2

permutations_result = list(itertools.permutations(elements, r))
print(permutations_result)

#[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

조합(Combination)

조합은 서로 다른 n개의 원소 중에서 r개의 원소를 순서에 상관없이 뽑는 방법의 수를 말합니다. 파이썬에서는 itertools 모듈의 combinations 함수를 사용하여 조합을 계산할 수 있습니다.

예제를 통해 조합 계산 방법을 알아보겠습니다. 다음은 4개의 원소('X', 'Y', 'Z', 'W') 중에서 3개의 원소를 뽑는 모든 조합을 구하는 코드입니다.

import itertools

elements = ['X', 'Y', 'Z', 'W']
r = 3

combinations_result = list(itertools.combinations(elements, r))
print(combinations_result)

#[('X', 'Y', 'Z'), ('X', 'Y', 'W'), ('X', 'Z', 'W'), ('Y', 'Z', 'W')]

중복 순열과 중복 조합

또한, 파이썬의 itertools 모듈을 사용하면 중복 순열과 중복 조합도 계산할 수 있습니다. 중복 순열은 원소들이 중복되어 순서대로 나열되는 경우의 수를, 중복 조합은 원소들이 중복되어 순서에 상관없이 뽑히는 경우의 수를 말합니다. itertools.product 함수로 중복 순열을, itertools.combinations_with_replacement 함수로 중복 조합을 계산할 수 있습니다.

예제를 통해 중복 순열과 중복 조합 계산 방법을 알아보겠습니다.

import itertools

elements = ['1', '2', '3']
r = 2

# 중복 순열
permutations_with_replacement_result = list(itertools.product(elements, repeat=r))
print(permutations_with_replacement_result)
# [('1', '1'), ('1', '2'), ('1', '3'), ('2', '1'), ('2', '2'), ('2', '3'), ('3', '1'), ('3', '2'), ('3', '3')]



# 중복 조합
combinations_with_replacement_result = list(itertools.combinations_with_replacement(elements, r))
print(combinations_with_replacement_result)
#[('1', '1'), ('1', '2'), ('1', '3'), ('2', '2'), ('2', '3'), ('3', '3')]

Problems

profile
철학과가 도전하는 Big Data, AI

0개의 댓글