1. 팩토리얼
- 1부터 양의 정수 n까지의 정수를 모두 곱하는 것 (단, 0! = 1로 약속한다.)
- 4!=1×2×3×4=24
input = int(input("계산하고자 하는 숫자를 입력하세요: "))
cum_val = 1
for i in range(input):
cum_val *= (i+1)
print(f"{input}! = {cum_val}")
# 출력결과
# 계산하고자 하는 숫자를 입력하세요: 4
# 4! = 24
2. 군 수열
- 여러 개의 항을 묶었을 때 규칙성을 갖는 수열
- {1,1,2,1,2,3,1,2,3,4}의 수열은 {(1),(1,2),(1,2,3),(1,2,3,4)}로 묶을 수 있음
- {1,1,2,1,2,3,1,2,3,4}의 수열을 확장하여, 11번째 항의 값을 출력하는 프로그램
seq_list = list()
seq = list()
n_degree = 11
counter = 1
while len(seq_list) <= n_degree:
seq = list(range(1, counter+1))
seq_list.extend(seq)
counter += 1
print("군수열:", seq_list)
print(f"{n_degree}번째 값: {seq_list[-1]}")
# 출력결과
# 군수열: [1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
# 11번째 값: 5
3. 순열(Permutation)
- n개 중 r개를 택하여 나열하는 경우의 수 = nPr = (n−r)!n!
- 순서가 중요하므로, (A, B)와 (B, A)는 서로 다른 경우의 수에 해당
# 8P3을 계산하는 프로그램
n = 8
r = 3
nom = 1
denom = 1
for i in range(n):
nom *= (i+1)
for j in range(n-r):
denom *= (j+1)
res = nom / denom
print(f"{n}P{r} = {res}") # 8P3 = 336
4. 조합(Combination)
- n개 중 r개를 택하는 경우의 수 = nCr = r!nPr = (n−r)!r!n!
- 순서를 무시하며, (A, B)와 (B, A)는 중복된 경우의 수로 간주
# 8C3을 계산하는 프로그램
n = 8
r = 3
nom = 1
denom = 1
for i in range(n):
nom *= (i + 1)
for j in range(n - r):
denom *= (j + 1)
for k in range(r):
denom *= (k + 1)
res = nom / denom
print(f"{n}P{r} = {res}") # 8C3 = 56
5. 확률(Probability)
- 모든 사건 중 특정 사건이 일어날 수 있는 수의 비율를 나타낸 것
- 순서가 중요하지 않은 경우, 모든 사건과 특정 사건은 조합(Combination)을 사용하여 나타낼 수 있음
- 박스에 '꽝'이 적힌 종이가 4장, '당첨'이 적힌 종이가 3장이 있는 경우에 '꽝'과 '당첨'을 각각 2장, 1장으로 뽑을 확률
- 모든 사건(분모): 7C3 = 35
- 특정 사건(분자): 4C2×3C1 = 18
- 확률: 18/35
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.