[강의 요약]
[Part 02. 수학_Ch 01. 기초 수학] 강의 수강
25_순열부터 30_확률(파이썬)까지 강의 수강하였음
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ] 30/100일 (30%)
[순열]
▶ 순열이란?
n개 중 r개를 순서 있게 나열하는 경우의 수를 말한다.
기호로는 nPr
# 공식은 다음과 같다.
nPr = n × (n - 1) × (n - 2) × ... × (n - r + 1)
= n! / (n - r)!
예시는 다음과 같다.
8P3 = 8 × 7 × 6 = 336
7P5 = 7 × 6 × 5 × 4 × 3 = 2520
▶ 원순열이란?
원형 테이블처럼 시작과 끝이 구분되지 않는 경우의 순열을 말한다.
원순열 공식 : n개 원형 순열 = (n - 1)!
예시는 다음과 같다.
4명을 원형 테이블에 앉히는 경우의 수 : (4 - 1)! = 3! = 6
[순열_파이썬]
파이썬에서는 math.factorial()을 활용해 간단히 구현 가능하다.
순열은 조합과 함께 코딩 테스트에서 자주 등장한다.
▶ 코드 : 순열 값 계산
import math
n = int(input("n을 입력하세요: "))
r = int(input("r을 입력하세요: "))
nPr = math.factorial(n) // math.factorial(n - r)
print(f"{n}P{r} = {nPr}")
★ 출력 결과 ★
n을 입력하세요: 8
r을 입력하세요: 3
8P3 = 336
▶ 코드 : 원순열 계산
n = int(input("원순열에 참여할 인원 수: "))
if n < 1:
print("1명 이상이어야 합니다.")
else:
result = math.factorial(n - 1)
print(f"{n}명을 원형으로 배치하는 경우의 수: {result}")
★ 출력 결과 ★
원순열에 참여할 인원 수: 4
4명을 원형으로 배치하는 경우의 수: 6
[조합]
▶ 조합이란?
n개 중에서 r개를 순서 없이 선택하는 경우의 수를 말한다.
순열과 달리 순서가 중요하지 않다.
순열과 조합의 차이는 무엇일까?
구분 | 순열(Permutation) | 조합(Combination) |
의미 | 순서 있게 선택 | 순서 없이 선택 |
기호 | nPr | nCr |
공식 | n! / (n - r)! | n! / [r! x (n - r)!] |
조합 계산 예시는 다음과 같다.
8C3 = 8! / (3! × 5!) = 56
7C5 = 7! / (5! × 2!) = 21
조합은 순열보다 결과 수가 적거나 같다. (중복 제거 된다)
▶ 문제 예시
카드 5장 중에서 2장을 고를 때, 삼각형과 사각형이 동시에 나올 확률은?
전체 조함 : 5C2 = 10
삼각형 + 사각형만 골라지는 경우 : 1가지
→ 확률 : 1/10 = 10%
[조합_파이썬]
파이썬에서는 math.factorial()을 이용해 손쉽게 구현 가능하다.
확률 문제, 경우의 수 문제 등에서 조합 개념은 자주 쓰인다.
▶ 코드 : 조합 계산
import math
n = int(input("n을 입력하세요: "))
r = int(input("r을 입력하세요: "))
if r > n:
print("r은 n보다 작거나 같아야 합니다.")
else:
nCr = math.factorial(n) // (math.factorial(r) * math.factorial(n - r))
print(f"{n}C{r} = {nCr}")
★ 출력 결과 ★
n을 입력하세요: 8
r을 입력하세요: 3
8C3 = 56
[확률]
▶ 확률이란?
모든 가능한 경우 중에서 특정 사건이 일어날 확률을 말한다.
공식은 다음과 같다.
확률 = 특정 사건이 발생할 경우의 수 / 전체 경우의 수
▶ 문제 예시 : 기본 확률
- 동전 던지기
- 표본공간: 앞면, 뒷면 → 2가지
- 사건: 앞면 → 1가지
- 확률: 1/2 = 0.5
- 주사위 던지기
- 표본공간: 1~6 → 6가지
- 사건: 3 → 1가지
- 확률: 1/6 ≈ 0.167
▶ 문제 예시 : 기본 확률
박스에 꽝 4장, 선물 3장 있다.
여기서 3장을 뽑을 때, 아래의 확률을 계산
전체 경우의 수 = 7C3 = 35
뽑기 조합 | 계산식 | 확률 |
꽝 1 + 선물 2 | 4C1 × 3C2 / 35 | 4 × 3 / 35 = 12/35 |
꽝 2 + 선물 1 | 4C2 × 3C1 / 35 | 6 × 3 / 35 = 18/35 |
꽝 3 + 선물 0 | 4C3 × 3C0 / 35 | 4 × 1 / 35 = 4/35 |
[확률_파이썬]
파이썬에서는 math.comb()를 활용하면 조합 계산이 간편하다.
▶ 코드 : 확률 계산
import math
# 조합 함수
def comb(n, r):
return math.comb(n, r)
total = comb(7, 3) # 전체 경우의 수
# 예: 꽝 2, 선물 1
success = comb(4, 2) * comb(3, 1)
prob = success / total
print(f"성공 확률: {prob:.4f} ({prob*100:.2f}%)")
★ 출력 결과 ★
성공 확률: 0.5143 (51.43%)
[나의 생각 정리]
경우의 수와 확률에 대한 이론적인 부분을 확실하게 숙지를 해야 나중에 코테 문제에서 구현할 수 있다고 생각한다.
적어도 공식은 누가 물어도 대답할 수 있을 정도로 기억해야 하고 어떤 상황에서 사용하는지 또한 알아야 한다.
백지상태로 파이썬 코드로 구현하는 연습을 하면 좋을 것 같다.
[적용점]
코딩테스트 문제에서도 경우의 수와 확률 문제는 내가 약한 부분이므로 많이 풀어보면 좋을 것 같다.
문제를 접했을 때 '확률'문제인지, '경우의 수'로 바꿀 수 있는지 판단할 수 있는 시야를 키우면 좋다.
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.17] (0) | 2025.04.17 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.16] (0) | 2025.04.16 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.14] (0) | 2025.04.14 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.13] (0) | 2025.04.13 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.12] (0) | 2025.04.12 |