팩토리얼

[연습문제]
- 팩토리얼 프로그램을 만들되, 반복문을 이용한 함수와 재귀 함수를 이용해서 구현해보고 또한, 파이썬에서 제공하는 모듈도 사용해 보자.
- 반복문(for문)
inputN = int(input('n 입력: '))
result = 1
for n in range(1, inputN+1):
result *= n
print('{} 팩토리얼: {}'.format(inputN, result))
result = 1
n = 1
while n <= inputN:
result *= n
n += 1
print('{} 팩토리얼: {}'.format(inputN, result))
def factorialFun(n):
if n == 1: return 1
return n * factorialFun(n - 1)
print('{} 팩토리얼: {}'.format(inputN, factorialFun(inputN)))
import math
math.factorial(inputN)
print('{} 팩토리얼: {}'.format(inputN, math.factorial(inputN)))
순열

[연습문제]
- 파이썬을 이용해서 다음 순열들의 값을 구하는 프로그램을 만들어 보자.
9P4, 6P2
numN = 9
numR = 4
result = 1
for n in range(numN, (numN-numR), -1):
print('n : {}'.format(n))
result *= n
print('result: {}'.format(result))
numN = 6
numR = 2
result = 1
for n in range(numN, (numN-numR), -1):
print('n : {}'.format(n))
result *= n
print('result: {}'.format(result))
- 카드 7장을 일렬로 나열하되 2, 4, 7번 카드가 서로 이웃하도록 나열하는 모든 경우의 수를 구하는 프로그램을 만들어보자.
fNum1 = 5
result1 = 1
for n in range(fNum1, 0, -1):
result1 *= n
print('result1: {}'.format(result1))
fNum2 = 3
result2 = 1
for n in range(fNum2, 0, -1):
result2 *= n
print('result2: {}'.format(result2))
print('모든 경우의 수: {}'.format(result1 * result2))
조합

[연습문제]
- 파이썬을 이용해서 다음 조합들의 값을 구하는 프로그램을 만들어 보자.
9C4, 6C2
numN = 9
numR = 4
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN-numR), -1):
print('n : {}'.format(n))
resultP = resultP * n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
print('n : {}'.format(n))
resultR = resultR * n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
numN = 6
numR = 2
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN-numR), -1):
print('n : {}'.format(n))
resultP = resultP * n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
print('n : {}'.format(n))
resultR = resultR * n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
- 카드 7장 중 3장을 선택했을 때 3, 4, 5가 동시에 선택될 수 있는 확률은?
numN = 7
numR = 3
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN-numR), -1):
print('n : {}'.format(n))
resultP = resultP * n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
print('n : {}'.format(n))
resultR = resultR * n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
result = (1/resultC)*100
print('{}%'.format(round(result, 2)))
확률

[연습문제]
- 박스에 ‘꽝’이 적힌 종이가 6장 있고, ‘선물’이 적힌 종이가 4장이 있을 때,
파이썬을 이용해서 ‘꽝’3장과 ‘선물’ 3장을 뽑는 확률(%)을 출력하자.
def proFun():
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN-numR), -1):
resultP = resultP * n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
resultR = resultR * n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
return resultC
sample = proFun()
print('sample: {}'.format(sample))
event1 = proFun()
print('event1: {}'.format(event1))
event2 = proFun()
print('event2: {}'.format(event2))
probability = (event1 * event2) / sample
print('probability: {}%'.format(round(probability * 100, 2)))