데이터

제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-12

Leah (리아) 2025. 10. 30. 15:27
반응형

 Chapter 01. 기초 수학

 

순열 (Permutation) - 경우의 수의 기본

1. 순열의 정의

순열(Permutation): n개 중에서 r개를 순서를 고려하여 나열하는 방법의 수

예를 들어 4개의 카드 {1, 2, 3, 4} 중 2개를 순서 있게 나열하면

이다.


2. 순열과 팩토리얼의 관계

순열은 팩토리얼(계승) 을 통해 간단히 표현할 수 있다.

즉, 전체 n개를 모두 곱한 값(n!)에서
선택하지 않은 나머지 항의 곱((n−r)!)을 나눈 값이 순열의 개수다.

구분 계산식 결과
8P3
336
7P5
2520

💡 순열은 “선택”과 “순서”가 모두 중요한 경우에 사용된다.


3. 실전 예시 – 카드 나열

카드 4장을 일렬로 나열하되,
삼각형과 사각형이 서로 이웃하도록 나열하는 경우의 수는?

  • 삼각형/사각형 묶음의 순서: 3! = 6
  • 내부 카드 순서: 2! = 2
  • 전체 경우의 수:

3!×2!=12

💡 문제에서 “이웃” 조건이 들어가면, 묶음 단위로 그룹화한 뒤 순열을 계산한다.


4. 파이썬으로 순열 구현

순열은 직접 계산하거나 itertools 라이브러리를 활용할 수 있다.

import math

# 기본 공식 이용
n, r = 8, 3
print(f"{n}P{r} =", math.perm(n, r))  # Python 3.8 이상 지원

# 또는 직접 계산
result = math.factorial(n) // math.factorial(n - r)
print("직접 계산:", result)

 

출력 결과:

8P3 = 336
직접 계산: 336

5. 원순열 (Circular Permutation)

원순열이란, 시작과 끝의 구분이 없는 순열이다.
즉, 일렬이 아니라 원형으로 배치되는 경우를 말한다.

  • 예시: {1, 2, 3}
    • 일렬 순열 → 3! = 6
    • 원형 순열 → (3−1)! = 2

n개의원소를원형으로배치할때경우의수=(n−1)

원소 수 (n) 일렬 순열 원순열 비고
3 6 2 시작점 회전이 동일하게 간주됨
4 24 6 4명의 친구가 원탁에 앉는 경우 등

💡 원순열은 회전이 동일한 배치로 간주되므로 전체 순열에서 중복을 제거한 개념이다.


💻 파이썬 실습 – 원순열 계산

import math

def circular_perm(n):
    return math.factorial(n - 1)

print(circular_perm(4))  # 6
print(circular_perm(5))  # 24

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


 

💡 생각 정리

이번 강의에서는 “순서가 중요할 때의 조합 원리”를 구체적으로 이해할 수 있었다.
단순히 nCr과 달리, 순열은 순서가 바뀌면 완전히 다른 경우로 취급된다는 점이 핵심이다.

팩토리얼을 기반으로 순열을 간단히 계산할 수 있으며, 이를 코드로 구현해보면서 수학적 개념이 실제 로직으로 연결된다는 점이 흥미로웠다.

또한 “원순열” 개념은 일상적인 문제(예: 원탁 좌석, 원형 그래프 등)에서도 자주 등장하므로, 단순한 수학 공식이 아닌 공간적 사고를 동반한 경우의 수 개념으로 이해해야 한다고 느꼈다.


🚀 적용점

 

  • 프로그래밍 활용
    • math.perm()과 math.factorial()을 이용해 순열 계산 자동화
    • itertools.permutations()로 직접 나열 결과 확인
  • 수학적 응용
    • “순서 고려” 여부에 따라 순열(P) vs 조합(C) 구분
    • 원순열은 회전 중복 제거 개념으로 이해
  • 시각화 연습
    • 원탁 배치 문제를 원형 그래프로 표현해보기
    • matplotlib로 좌석 배치/경로 탐색 문제 시각화

👉 이번 강의는 경우의 수의 기초이자,
데이터 분석·AI 알고리즘에서의 조합 최적화 사고로 확장할 수 있는 출발점이었다.

 

반응형