**순열(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)]
'Coding Test > 알고리즘 이론' 카테고리의 다른 글
| DP 이론 (0) | 2025.04.28 |
|---|---|
| Graph 이론 종합 & 구현 코드 ★★★ (0) | 2025.04.20 |
| [DP: LCS 최장 공통 부분수열 Longest Common Subsequence] (0) | 2025.04.14 |
| DP: Unbounded Knapsack (0) | 2025.04.13 |
| [DP] 0/1 Knapsack 문제: 최대 profit 가지는 가방 선택 문제 ★★★ (0) | 2025.04.12 |