해당 글은 제로베이스데이터스쿨 학습자료를 참고하여 작성되었습니다

📌수열

  • 특정한 규칙을 가지고 나열된 수
    (출처:제로베이스데이터스쿨)

📌등차수열

  • 연속된 두 항의 차이가 일정한 수열
    (출처:제로베이스데이터스쿨)

등차수열공식

  • 일반항 : an=a1+(n1)da_n = a_1 + (n-1) * d
  • 등차중항 : an=(an1+an+1)/2a_n = (a_{n-1} + a_{n+1}) / 2
  • 누적합 : Sn=n(a1+an)/2S_n = n(a_1 + a_n) / 2

📝입력

import math

inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))

valueN = 0
n = 1
while n <= inputN:

    if n == 1:
        valueN = inputN1
        print('{}번째 항의 값: {}'.format(n, valueN))
        n += 1
        continue

    valueN += inputD
    print('{}번째 항의 값: {}'.format(n, valueN))
    n += 1

print()
print('수학공식활용')
print(f'a{inputN}: ', end='')
print(inputN1 + (inputN-1) * inputD)
print(f'S{inputN}: ', end='')
print(inputN * (inputN1 + valueN) / 2)
print(f'일반항: {inputD}n', end='')
c = inputN1 - inputD
if c > 0:
    print(f' + {c}')
elif c < 0:
    print(f' - {int(math.fabs(c))}')

🧾출력

a1 입력: 2
공차 입력: 3
n 입력: 7
1번째 항의 값: 2
2번째 항의 값: 5
3번째 항의 값: 8
4번째 항의 값: 11
5번째 항의 값: 14
6번째 항의 값: 17
7번째 항의 값: 20

수학공식활용
a7: 20
S7: 77.0
일반항: 3n - 1

📌등비수열

  • 연속된 두 항의 비가 일정한 수열
    (출처:제로베이스데이터스쿨)

등비수열공식

  • 일반항 : an=a1rn1a_n = a_1 * r^{n-1}
  • 등비중항 : an2=(an1an+1)a_n^2 = (a_{n-1} * a_{n+1})
  • 누적합 : Sn=a1(1rn)/(1r)S_n = a_1 * (1 - r^n)/(1 - r)

📝입력

inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

valueN = 0
n = 1
while n <= inputN:

    if n == 1:
        valueN = inputN1
        print('{}번째 항의 값: {}'.format(n, valueN))
        n += 1
        continue

    valueN *= inputR
    print('{}번째 항의 값: {}'.format(n, valueN))
    n += 1

print()
print('수학공식활용')
print(f'a{inputN}: ', end='')
print(inputN1 * inputR ** (inputN - 1))
print(f'S{inputN}: ', end='')
print(inputN1 * (1 - inputR ** inputN) / (1 - inputR))
print(f'일반항: {inputN1}', end='')
print(f' * {inputR}^(n-1)')

🧾출력

a1 입력: 2
공비 입력: 2
n 입력: 7
1번째 항의 값: 2
2번째 항의 값: 4
3번째 항의 값: 8
4번째 항의 값: 16
5번째 항의 값: 32
6번째 항의 값: 64
7번째 항의 값: 128

수학공식활용
a7: 128
S7: 254.0
일반항: 2 * 2^(n-1)

📌시그마

  • 수열의 합을 나타내는 기호
    (출처:제로베이스데이터스쿨)

📌계차수열

  • 어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열
    (출처:제로베이스데이터스쿨)

📝입력

# an = {3, 7, 13, 21, 31, 43, 57}
# bn =   {4, 6,  8,  10, 12, 14}

inputAN1 = int(input('a1 입력: '))
inputAN = int(input('an 입력: '))

inputBN1 = int(input('b1 입력: '))
inputBD = int(input('bn 공차 입력: '))

valueAN = 0
valueBN = 0

n = 1
while n <= inputAN:

    if n == 1:
        valueAN = inputAN1
        valueBN = inputBN1
        print('an의 {}번째 항의 값: {}'.format(n, valueAN))
        print('bn의 {}번째 항의 값: {}'.format(n, valueBN))
        n += 1
        continue

    valueAN += valueBN
    valueBN += inputBD
    print('an의 {}번째 항의 값: {}'.format(n, valueAN))
    print('bn의 {}번째 항의 값: {}'.format(n, valueBN))
    n += 1

🧾출력

a1 입력: 3
an 입력: 7
b1 입력: 4
bn 공차 입력: 2
an의 1번째 항의 값: 3
bn의 1번째 항의 값: 4
an의 2번째 항의 값: 7
bn의 2번째 항의 값: 6
an의 3번째 항의 값: 13
bn의 3번째 항의 값: 8
an의 4번째 항의 값: 21
bn의 4번째 항의 값: 10
an의 5번째 항의 값: 31
bn의 5번째 항의 값: 12
an의 6번째 항의 값: 43
bn의 6번째 항의 값: 14
an의 7번째 항의 값: 57
bn의 7번째 항의 값: 16

📌피보나치 수열

  • 첫째항과 둘째항을 합친 수열
    (출처:제로베이스데이터스쿨)

📝입력

inputN = int(input('n 입력: '))

valueN = 0
sumN = 0

valuePreN2 = 0
valuePreN1 = 0

n = 1
while n <= inputN:
    if n in (1, 2):
        valueN = 1
        valuePreN2 = valueN
        valuePreN1 = valueN
        sumN += valueN
        n += 1

    else:
        valueN = valuePreN2 + valuePreN1
        valuePreN2 = valuePreN1
        valuePreN1 = valueN
        sumN += valueN
        n += 1

print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 합: {}'.format(inputN, sumN))

🧾출력

n 입력: 5
5번째 항의 값: 5
5번째 항까지의 합: 12

📌팩토리얼

  • 1부터 양의 정수 n까지의 정수를 모두 곱한 것
    (출처:제로베이스데이터스쿨)

📝입력

def userFactorial(num):
    if num == 1: return 1
    return num * userFactorial(num - 1)

print('사용자 재귀함수 팩토리얼 ')
print(userFactorial(5))

import math
print()
print('math모듈 팩토리얼')
print(math.factorial(5))

🧾출력

사용자 재귀함수 팩토리얼 
120

math모듈 팩토리얼
120

📌순열

  • 순서있게 n개에서 r개를 택하여 나열하는 경우의 수
    (출처:제로베이스데이터스쿨)

📝입력

numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
result = 1

for n in range(numN, numN-numR, -1):
    print(f'n : {n}')
    result = result * n

print('result: {}'.format(result))

print()
import math
print('math.perm(n, r) 사용')
print(math.perm(numN, numR))

print()
import itertools
print('itertools.permutations([1,2,3], r)으로 경우의 수 나열')
for i in itertools.permutations([1,2,3], numR):
    print(i)

🧾출력

numN 입력: 4
numR 입력: 2
n : 4
n : 3
result: 12

math.perm(n, r) 사용
12

itertools.permutations([1,2,3], r)으로 경우의 수 나열
(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)

📌원순열

  • 시작과 끝의 구분이 없는 순열

    (출처:제로베이스데이터스쿨)

--

📌조합

  • 순서무관하게 n개에서 r개를 택하여 나열하는 경우의 수
    (출처:제로베이스데이터스쿨)

📝입력

numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP = 1
resultR = 1
resultC = 1

for n in range(numN, numN-numR, -1):
    print('n: {}'.format(n))
    resultP *= n

print('resultP: {}'.format(resultP))

for n in range(numR, 0, -1):
    print('n: {}'.format(n))
    resultR *= n

print('resultR: {}'.format(resultR))

resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))

print()
import math
print('math.comb(n, r) 사용')
print(math.comb(numN, numR))

print()
import itertools
print('itertools.combinations(['O', 'O', 'O', 'X', 'X'], r)으로 경우의 수 나열')
for i in itertools.combinations(['O', 'O', 'O', 'X', 'X'], numR):
    print(i)

🧾출력

numN 입력: 8
numR 입력: 3
n: 8
n: 7
n: 6
resultP: 336
n: 3
n: 2
n: 1
resultR: 6
resultC: 56

math.comb(n, r) 사용
56

itertools.combinations(['O', 'O', 'O', 'X', 'X'], r)으로 경우의 수 나열
('O', 'O', 'O')
('O', 'O', 'X')
('O', 'O', 'X')
('O', 'O', 'X')
('O', 'O', 'X')
('O', 'X', 'X')
('O', 'O', 'X')
('O', 'O', 'X')
('O', 'X', 'X')
('O', 'X', 'X')

📌확률

  • 모든 사건에서 특정 사건이 일어날 수 있는 수를 나타낸 것
    (출처:제로베이스데이터스쿨)

📝입력

# 상자7개, 꽝4개, 선물3개인 경우 꽝2장과 선물 1장을 뽑을 확률구하기
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 *= n
    print(f'resultP: {resultP}')

    for n in range(numR, 0, -1):
        resultR *= n
    print(f'resultR: {resultR}')

    resultC = int(resultP / resultR)
    print(f'resultC: {resultC}')

    return resultC

sample = proFun()
print('sample: {}'.format(sample))
print()

event1 = proFun()
print('event1: {}'.format(event1))
print()

event2 = proFun()
print('event2: {}'.format(event2))
print()

probability = (event1 * event2) / sample
print('probability: {}%'.format(round(probability * 100, 2)))

🧾출력

numN 입력: 7
numR 입력: 3
resultP: 210
resultR: 6
resultC: 35
sample: 35

numN 입력: 4
numR 입력: 2
resultP: 12
resultR: 2
resultC: 6
event1: 6

numN 입력: 3
numR 입력: 1
resultP: 3
resultR: 1
resultC: 3
event2: 3

probability: 51.43%

0개의 댓글