Day17. 5/19일 파이썬 기초수학 문제풀이

이동은·2023년 5월 23일
0
post-thumbnail

오늘의 목표

  • 기초수학 문제풀이 끝내기

오늘의 달성목표

  • 기초수학 문제풀이 끝내기

오늘을 마치며

  • 이제 슬슬 내용이 다시 어려워지고 있다. 수학문제를 반복문과 조건문을 이용하여 코딩한다는게 볼 때마다 신기하다. 앞으로 열심히 연습하여 나도 문제를 보고 코딩을 풀어내는 능력을 길러내야지!

기초수학 문제풀이

약수와 소수 기출 문제

소인수분해 기출 문제

최대 공약수 & 최소 공배수

진법

등차수열

등비수열

시그마
등비수열의 합 공식 : sn = a1 (1 - r^n) / (1 - r)
sumN = inputA1
(1 - inputR ** inputN) / (1 - inputR)
print('{}번째 항까지의 합: {}'.format(inputN, format(int(sumN), ',')))

계차수열
등차수열 합 공식 an = (3n^2 - 3n + 4) / 2
inputA1 = 2
inputN = int(input('an 입력: '))
valueN = ((3 inputN ** 2) - (3 inputN) + 4) / 2
print('an의 {}번째 항의 값: {}'.format(inputN, int(valueN)))

피보나치 수열
inputN = int(input('n 입력: '))
valueN = 0; sumN = 0
valuePreN2 = 0
valuePreN1 = 0
n = 1
while n <= inputN:
if n == 1 or n == 2:
valueN = 1
valuePreN2 = valueN
valuePreN1 = valueN
sumN += valueN
n += 1
else:
valueN = valuePreN2 + valuePreN1 핵심
valuePreN2 = valuePreN1
valuePreN1 = valueN
sumN += valueN
n += 1

팩토리얼

  • 반복문을 이용한 경우
def facFun1(n):
    fac = 1
    for n in range(1, (n+1)):
        fac *= n
    return fac
num = int(input('input number: '))
print(f'{num}!: {facFun1(num)}')
  • 재귀함수를 이용한 경우
def facFun2(n):
    if n == 1:
        return n
    return n * facFun2(n-1)
num = int(input('input number: '))
print(f'{num}!: {facFun2(num)}')
  • 모듈을 이용한 경우
import math
num = int(input('input number: '))
print(f'{num}!: {math.factorial(num)}')

군 수열

flag = True
n = 1
nCnt = 1; searchNC = 0; searchNP = 0
sumN = 0
while flag:
    for i in range(1, (n+1)):
        print('{}/{}'.format(i, (n-i+1)), end=' ')
        sumN += i / (n - i + 1)
        nCnt += 1
        if sumN > 100:
            searchNC = i
            searchNP = n - i + 1
            flag = False
            break
    print()
    n += 1

순열

numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
result = 1
for n in range(numN, (numN- numR), -1):
    print('n: {}'.format(n))
    result *= n
print('result: {}'.format(result))
fNum1 = int(input('factorial1 입력: '))
result1 = 1
for i in range(fNum1, 0, -1):
    result1 *= i
print('result1: {}'.format(result1))
fNum2 = int(input('factorial2 입력: '))
result2 = 1
for i in range(fNum2, 0, -1):
    result2 *= i
print('result2: {}'.format(result2))
print('모든 경우의 수: {}'.format(result1 * result2))

조합

numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN - numR), -1):
    resultP *= n
print('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
    resultR *= n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))

확률

def proFun():
    numN = int(input('numN 입력: '))
    numR = int(input('numR 입력: '))
    resultP = 1
    resultR = 1
    resultC = 1
    #순열(P)
    for n in range(numN, (numN - numR), -1):
        resultP *= n
    print('resultP : {}'.format(resultP))
    #R(f)
    for n in range(numR, 0, -1):
        resultR *= n
    print('resultR : {}'.format(resultR))
    #조합(C)
    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)))

[본 글의 내용 중 일부는 제로베이스 데이터스쿨 강의자료의 내용 중 일부가 포함되어 있습니다.]

profile
또 다른 나를 찾아서

0개의 댓글