Coding Test/알고리즘 이론
순열(permutaion) 과 조합(combination)
hyunkookim
2025. 4. 16. 02:57
**순열(permutation)**과 **조합(combination)**은 모두 "선택"과 관련된 개념이지만, 순서를 따지느냐에 따라 완전히 달라져요.
✅ 순열 (Permutation)
📌 정의:
순열은 순서가 중요한 선택
즉, 어떤 항목들을 어떤 순서로 배열하느냐가 중요해요.
📌 예시:
숫자 [1, 2, 3]에서 3개를 뽑아 순열을 만들면:
[1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]
👉 총 6개 (3! = 6)
✅ 조합 (Combination)
📌 정의:
조합은 순서를 따지지 않는 선택
즉, 뭐를 뽑았는지가 중요하지, 어떤 순서로 뽑았는지는 중요하지 않아요.
📌 예시:
숫자 [1, 2, 3]에서 3개를 뽑아 조합을 만들면:
[1, 2, 3]
👉 [1, 2, 3], [3, 2, 1], [2, 1, 3] 다 같은 조합!
👉 총 1개 (3C3 = 1)
🧠 핵심 차이 요약
항목 | 순열 (Permutation) | 조합 (Combination) |
순서 | 중요함 ✅ | 중요하지 않음 ❌ |
예시 | [1,2,3], [3,2,1]은 다름 | [1,2,3], [3,2,1]은 같음 |
공식 | nPr = n! / (n-r)! | nCr = n! / (r! (n-r)!) |
🔧 Python 예시 (3개 중 2개 선택)
from itertools import permutations, combinations
nums = [1, 2, 3]
# 순열 (순서 O)
print(list(permutations(nums, 2)))
# → [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
# 조합 (순서 X)
print(list(combinations(nums, 2)))
# → [(1, 2), (1, 3), (2, 3)]