λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Study_note(zb_data)/Python

μŠ€ν„°λ”” λ…ΈνŠΈ (기초 μˆ˜ν•™ 01 ~ 30)_0717

(기초 μˆ˜ν•™ 01 ~ 15)

πŸ“Œ μ•½μˆ˜

  • μ–΄λ–€ 수λ₯Ό λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€κ²Œ ν•˜λŠ” 수
  • λ‚˜λ¨Έμ§€κ°€ 0이닀 (λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€κΈ° λ•Œλ¬Έμ—) 
inputNumber = int(input('0보닀 큰 μ •μˆ˜ μž…λ ₯ : '))

for number in range (1, inputNumber + 1): 
    if inputNumber % number == 0: #μž…λ ₯ν•œ μ •μˆ˜μ™€ λ°˜λ³΅λ˜μ–΄ 돌고 μžˆλŠ” μ •μˆ˜ λ‘˜μ„ λ‚˜λˆ μ„œ λ‚˜λ¨Έμ§€κ°€ 0μΌλ•Œ
        print('{}의 μ•½μˆ˜ : {}'.format(inputNumber, number))

πŸ“Œ μ†Œμˆ˜

  • 1κ³Ό μžμ‹ λ§Œμ„ μ•½μˆ˜λ‘œ κ°€μ§€λŠ” 수 (단, 1은 μ œμ™Έ)
  • 1~30κΉŒμ§€ λͺ«μœΌλ‘œ λ‚˜μ˜¬ 수 μžˆλŠ” μ†Œμˆ˜μ˜ 경우의 수λ₯Ό 생각
    • ex) 2,3,5..
  • (5*λͺ«)에 5보닀 μž‘μ€ μ†Œμˆ˜λ₯Ό λ”ν•œλ‹€. (기쀀이 5둜 λ‚˜λˆˆ λͺ«μ΄κΈ° λ•Œλ¬Έμ— 기본적으둜 5둜 λ‚˜λˆ„μ–΄ 질 수 μžˆμ–΄μ•Όν•¨)
  • 2*5 / 3*5 / 5*5 결과값에 λ‚˜μ™”λ˜ μ•žμ˜ μ†Œμˆ˜ λͺ«μ˜ 값을 더해쀀닀
  • 12, 13, 17, 18, 27, 28

좜처 : 제둜베이슀 데이터 슀쿨

inputNumber = int(input('0보닀 큰 μ •μˆ˜ μž…λ ₯ : '))

for number in range (2, inputNumber + 1): #2λΆ€ν„° 10κΉŒμ§€ numberκ°€ 반볡
    flag = True

    for n in range (2, number): #2λΆ€ν„° 9κΉŒμ§€ n이 반볡 λœλ‹€.
        if number % n == 0: #μ—¬κΈ°μ„œ numberκ°€ 10이라 κ°€μ •, n은 9κΉŒμ§€ λˆλ‹€ κ·Έλž˜μ„œ 기쀀이 10이라면, 9κΉŒμ§€ λ‚˜λˆ„μ—ˆμ„ λ•Œ λͺ«μ΄ 0이 λ˜λŠ” μ•½μˆ˜λ₯Ό λ‹€ ν™•μΈν•œλ‹€
            flag = False
            break

    if flag:
        print('{} : μ†Œμˆ˜'.format(number))

    else:
        print('{} : ν•©μ„±μˆ˜'.format(number) )

πŸ“Œ μ†ŒμΈμˆ˜ λΆ„ν•΄

  • μ•½μˆ˜(인수) μ€‘μ—μ„œ μ†Œμˆ˜μΈ 숫자λ₯Ό μ†ŒμΈμˆ˜λΌκ³  ν•œλ‹€.
  • 154의 μ•½μˆ˜ - [1, 2, 7, 11, 14, 22, 77, 154]
    • μ†ŒμΈμˆ˜ - [2, 7, 11]

μ•„μ΄νŒ¨λ“œ κ΅Ώλ…ΈνŠΈλ‘œ μ˜€λžœλ§Œμ— 문제λ₯Ό ν’€μ–΄λ΄€λ‹€..

#μ†ŒμΈμˆ˜ λΆ„ν•΄
inputNumber = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))

n = 2 #λ‚˜λˆ„λŠ” κΈ°μ€€
while n <= inputNumber:
    if inputNumber % n == 0: #inputnumberκ°€ 2둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ©΄
        print('μ†ŒμΈμˆ˜ : {}'.format(n)) #μ†ŒμΈμˆ˜μ΄λ‹€.
        inputNumber /= n #2둜 λ‚˜λˆ„λ©΄μ„œ 반볡
    else:
        n += 1 #λ§Œμ•½μ— 2둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€μ§€ μ•ŠμœΌλ©΄ n을 +1
#72에 xλ₯Ό κ³±ν•˜λ©΄ y의 제곱이 λœλ‹€κ³  ν•  λ•Œ, x에 ν•΄λ‹Ήν•˜λŠ” κ°€μž₯ μž‘μ€ μ •μˆ˜λ₯Ό κ΅¬ν•˜μž

inputNumber = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
n = 2
searchNumbers = [] #ListλŠ” λŒ€κ΄„ν˜Έλ‘œ μ„ μ–Έ

while n <= inputNumber:
    if inputNumber % n == 0:
        print('μ†ŒμΈμˆ˜ : {}'.format(n))
        if searchNumbers.count(n) == 0: 
            searchNumbers.append(n)
        elif searchNumbers.count(n) == 1:
            searchNumbers.remove(n)

        inputNumber /= n
    else:
        n += 1

print('searchNumbers = {}'.format(searchNumbers))

πŸ“Œ κ³΅μ•½μˆ˜

  • 두 개 μ΄μƒμ˜ μˆ˜μ—μ„œ κ³΅ν†΅λœ μ•½μˆ˜λ₯Ό κ³΅μ•½μˆ˜λΌκ³  ν•œλ‹€.
    • 12와 20의 κ³΅μ•½μˆ˜ - (1,2,4)

πŸ“Œ μ΅œλŒ€ κ³΅μ•½μˆ˜

  • κ³΅μ•½μˆ˜ 쀑 κ°€μž₯ 큰 수λ₯Ό μ΅œλŒ€ κ³΅μ•½μˆ˜λΌκ³  ν•œλ‹€.
  • 숫자λ₯Ό 같이 μ†ŒμΈμˆ˜ λΆ„ν•΄ν•˜μ—¬ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό ꡬ할 수 μžˆλ‹€.

#λ‘κ°œμ˜ 수λ₯Ό μž…λ ₯ν•˜λ©΄ κ³΅μ•½μˆ˜μ™€ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό 좜λ ₯ν•˜λŠ” μ½”λ“œλ₯Ό λ§Œλ“€μž.

num1 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
num2 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
maxNum = 0 #μ΅œλŒ€ κ³΅μ•½μˆ˜
numlist = [] #κ³΅μ•½μˆ˜ 리슀트
for i in range (1, num1 + 1):
    if num1 % i == 0 and num2 % i == 0: #num1κ³Ό num2κ°€ κ³΅ν†΅μ μœΌλ‘œ i둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ λͺ«μ΄ 0이라면
        numlist.append(i) #κ³΅μ•½μˆ˜ λ¦¬μŠ€νŠΈμ— λ„£μ–΄μ£Όκ³ 
        print(f'{num1}κ³Ό {num2}의 κ³΅μ•½μˆ˜ : {i}') #μ‹€ν–‰
        maxNum = i #κ·Έ iλŠ” maxNum에 λ„£μ–΄μ€€λ‹€ (μ΅œλŒ€κ°€ λ‚˜μ˜¬λ•ŒκΉŒμ§€ 계속 κ°±μ‹ )

print(f'{num1}κ³Ό {num2}의 μ΅œλŒ€ κ³΅μ•½μˆ˜ : {maxNum}')
print(f'κ³΅μ•½μˆ˜ 리슀트 : {numlist}')

πŸ“Œ μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•

좜처 : 제둜베이슀 데이터 슀쿨

#λ‘κ°œμ˜ 수λ₯Ό μž…λ ₯ν•˜λ©΄ κ³΅μ•½μˆ˜μ™€ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό 좜λ ₯ν•˜λŠ” μ½”λ“œλ₯Ό λ§Œλ“€μž.
#μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•

num1 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
num2 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))

temp1 = num1 # 20
temp2 = num2 # 30

while temp2 > 0:
    temp = temp2
    temp2 = temp1 % temp2
    temp1 = temp

print('{}, {}의 μ΅œλŒ€ κ³΅μ•½μˆ˜ : {}'.format(num1, num2, temp1))

πŸ“Œ 곡배수

  • 두 개 μ΄μƒμ˜ μˆ˜μ—μ„œ κ³΅ν†΅λœ 배수λ₯Ό 곡배수라고 ν•œλ‹€.
  • κ·Έ 쀑 κ°€μž₯ μž‘μ€ 곡배수λ₯Ό μ΅œμ†Œ 곡배수라고 ν•œλ‹€

πŸ“Œ μ΅œμ†Œ 곡배수 κ΅¬ν•˜κΈ°

num1 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
num2 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
maxNum = 0 (μ΅œλŒ€ κ³΅μ•½μˆ˜)

for i in range (1, num1 + 1):
    if num1 % i == 0 and num2 % i ==0:
        print(f'κ³΅μ•½μˆ˜ : {i}')
        maxNum = i
    else:
        i += 1

print(f'{num1}와 {num2}의 μ΅œλŒ€ κ³΅μ•½μˆ˜ : {maxNum}')

num3 = (num1 * num2) // maxNum #두 수λ₯Ό κ³±ν•˜κ³  μ΅œλŒ€ κ³΅μ•½μˆ˜λ‘œ λ‚˜λˆ„λ©΄ μ΅œμ†Œ κ³΅λ°°μˆ˜κ°€ λ‚˜μ˜¨λ‹€.

print(f'{num1}와 {num2}의 μ΅œμ†Œ 곡배수 : {num3}')

πŸ“Œ 숫자 3개의 μ΅œμ†Œ 곡배수 κ΅¬ν•˜κΈ°

#μ•žμ„  λ‘κ°œμ˜ μˆ˜μ— λŒ€ν•œ μ΅œμ†Œ 곡배수λ₯Ό κ΅¬ν•œ ν›„, λ‹€μ‹œ μ„Έ 번째 μˆ˜μ™€μ˜ μ΅œμ†Œ 곡배수λ₯Ό κ΅¬ν•˜λ©΄
#숫자 3개의 μ΅œμ†Œ 곡배수λ₯Ό ꡬ할 수 μžˆλ‹€

num1 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
num2 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
num3 = int(input('1보닀 큰 μ •μˆ˜ μž…λ ₯ : '))
maxNum = 0

for i in range (1, num1 + 1):
    if num1 % i == 0 and num2 % i ==0:
        print(f'κ³΅μ•½μˆ˜ : {i}')
        maxNum = i
    else:
        i += 1

print(f'{num1}와 {num2}의 μ΅œλŒ€ κ³΅μ•½μˆ˜ : {maxNum}')

minNum = (num1 * num2) // maxNum

print(f'{num1}와 {num2}의 μ΅œμ†Œ 곡배수 : {minNum}')

print()

newNum = minNum

for j in range (1, newNum+1):
    if newNum % j == 0 and num3 % j ==0:
        print(f'κ³΅μ•½μˆ˜ : {j}')
        maxNum = j
    else:
        j += 1

print(f'{newNum}와 {num3}의 μ΅œλŒ€ κ³΅μ•½μˆ˜ : {maxNum}')

newNum2 = (newNum * num3) // maxNum

print(f'{num1}κ³Ό {num2}, {num3}의 μ΅œμ†Œ 곡배수 = {newNum2}')

πŸ“Œ 진법

  • 2진법 - 0, 1 : bin()
  • 8진법 - 0 ~ 7 : oct()
  • 10진법 - 0 ~ 9 
  • 16진법 - 0 ~ F hex()
#10μ§„μˆ˜λ₯Ό Xμ§„μˆ˜λ‘œ λ³€ν™˜

dNum = 30

print('2μ§„μˆ˜ : {}'.format(bin(dNum))) #2μ§„μˆ˜
print('8μ§„μˆ˜ : {}'.format(oct(dNum))) #8μ§„μˆ˜
print('16μ§„μˆ˜ : {}'.format(hex(dNum))) #16μ§„μˆ˜

print('2μ§„μˆ˜ : {}'.format(format(dNum, '#b')))
print('8μ§„μˆ˜ : {}'.format(format(dNum, '#o')))
print('16μ§„μˆ˜ : {}'.format(format(dNum,'#x')))

print('{0:#b} {0:#o} {0:#x}'.format(dNum))

print('2μ§„μˆ˜ : {}'.format(format(dNum, 'b'))) #μ•žμ— 상징은 μ—†μ–΄μ§€κ³  λ³€ν™˜λœ 숫자만 λ‚˜μ˜¨λ‹€
print('8μ§„μˆ˜ : {}'.format(format(dNum, 'o')))
print('16μ§„μˆ˜ : {}'.format(format(dNum,'x'))) 

#Xμ§„μˆ˜λ₯Ό 10μ§„μˆ˜λ‘œ λ³€ν™˜
print('2μ§„μˆ˜ (0b11110) : 10μ§„μˆ˜({})'.format(int('0b11110',2)))
print('8μ§„μˆ˜ (0o36) : 10μ§„μˆ˜({})'.format(int('0o36',8)))
print('16μ§„μˆ˜ (0x1e) : 10μ§„μˆ˜({})'.format(int('0x1e',16)))

πŸ“Œ λ“±μ°¨ μˆ˜μ—΄

  • λ“±μ°¨ μˆ˜μ—΄μ˜ μΌλ°˜ν•­ : an = a1 + (n-1)*d
  • λ“±μ°¨ 쀑항 : an = (an-1 + an+1) / 2
  • λ“±μ°¨ μˆ˜μ—΄μ˜ ν•© : sn = n(a1 + an) / 2
#λ‹€μŒ μˆ˜μ—΄μ„ 보고 n번째 ν•­μ˜ 값을 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄λ³΄μž

inputa1 = int(input('a1 μž…λ ₯ : '))
inputD = int(input('곡차 d μž…λ ₯ : '))
inputN = int(input('n μž…λ ₯ : '))

ValueN = 0

n = 1

while n <= inputN:

    if n == 1: 
        ValueN = inputa1 #n이 1μΌλ•Œ a1κ³Ό κ°™λ‹€
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, ValueN))
        n += 1 #n에 1을 λ”ν•˜κ³  λ‹€μ‹œ whileλ¬Έ 처음으둜 λŒμ•„κ°„λ‹€.
        continue

    else:
        ValueN += inputD #κ³„μ†ν•΄μ„œ 값에 곡차λ₯Ό 더해쀀닀 (μž…λ ₯ν•œ μˆ«μžκΉŒμ§€)
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, ValueN)) 
        n += 1

print('{}번째 ν•­μ˜ κ°’ : {}'.format(inputN, ValueN))

#또 λ‹€λ₯Έ 방법
#an = a1 + (n-1)d ν™œμš©
ValueN = inputa1 + (inputN - 1) * inputD

print('{}번째 ν•­μ˜ κ°’ : {}'.format(input_N, Value_N))
#λ‹€μŒ μˆ˜μ—΄μ„ 보고 n번째 ν•­κΉŒμ§€μ˜ 합을 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄λ³΄μž.
input_a1 = int(input('a1 μž…λ ₯ : '))
input_D = int(input('곡차 d μž…λ ₯ : '))
input_N = int(input('n μž…λ ₯ : '))

value_N = 0
sum_N = 0
n = 1

while n <= input_N:

    if n == 1:
        value_N = input_a1
        sum_N += value_N
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, value_N))
        print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, sum_N)) #기쑴의 μˆ˜μ‹μ— sum을 μΆ”κ°€
        n += 1
        continue

    else:
        value_N += input_D
        sum_N += value_N
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, value_N))
        print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, sum_N))
        n += 1

print('{}번째 ν•­μ˜ κ°’ : {}'.format(input_N, value_N))
print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(input_N, sum_N))


#n번째 ν•­κΉŒμ§€μ˜ ν•© κ΅¬ν•˜λŠ” 곡식!
#sn = n(a1 + an) / 2
sum_N = input_N * (input_a1 + value_N) / 2
print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(input_N,int(sum_N)))

πŸ“Œ λ“±λΉ„ μˆ˜μ—΄

  • λ“±λΉ„ μˆ˜μ—΄μ˜ 일반 ν•­ : an = a1 * r^(n-1)
  • λ“±λΉ„ μˆ˜μ—΄μ˜ ν•© : sn = a1 * (1 - (r^n)) / (1-r)
input_a1 = int(input('a1 μž…λ ₯ : '))
input_R = int(input('곡비 r μž…λ ₯ : '))
input_N = int(input('n번째 ν•­ μž…λ ₯ : '))

value_N = 0
sum_N = 0
n = 1

while n <= input_N:
    if n == 1:
        value_N = input_a1
        sum_N +=input_a1
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, value_N))
        print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, sum_N))
        n += 1
        continue

    else:
        value_N *= input_R
        sum_N += value_N
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, value_N))
        print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, sum_N))
        n += 1
#λ“±λΉ„μˆ˜μ—΄μ˜ n번째 ν•­ 곡식 = an = a1*r^(n-1)
input_a1 = int(input('a1 μž…λ ₯ : '))
input_R = int(input('곡비 r μž…λ ₯ : '))
input_N = int(input('n번째 ν•­ μž…λ ₯ : '))

value_N = 0
sum_N = 0
n = 1

value_N = input_a1*(input_R ** (input_N-1))

print('{}번째 ν•­ = {}'.format(input_N, value_N))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#sn = a1 * (1 - r^n) / (1-r)
input_a1 = int(input('a1 μž…λ ₯ : '))
input_R = int(input('곡비 r μž…λ ₯ : '))
input_N = int(input('n번째 ν•­ μž…λ ₯ : '))

value_N = 0
n = 1

sum_N = input_a1 * ( 1 - (input_R ** input_N )) / (1 - input_R)

print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, int(sum_N)))

(기초 μˆ˜ν•™ 16 ~ 30)

πŸ“Œ μ‹œκ·Έλ§ˆ

  • μˆ˜μ—΄μ˜ 합을 λ‚˜νƒ€λ‚΄λŠ” 기호

πŸ“Œ κ³„μ°¨μˆ˜μ—΄

an의 κ³„μ°¨μˆ˜μ—΄ bn을 μ΄μš©ν•˜μ—¬ an의 μΌλ°˜ν•­μ„ κ΅¬ν•œλ‹€

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

input_A1 = int(input('a1 μž…λ ₯ : '))
input_AN = int(input('an μž…λ ₯ : '))

input_B1 = int(input('B1 μž…λ ₯ : '))
input_BD = int(input('BD μž…λ ₯ : '))

value_AN = 0
value_BN = 0

n = 1

while n <= input_AN:
    if n == 1:
        value_AN = input_A1
        value_BN = input_B1
        print('an의 {}번째 ν•­μ˜ κ°’ : {}'.format(n, value_AN))
        print('bn의 {}번째 ν•­μ˜ κ°’ : {}'.format(n, value_BN))
        print()
        n+=1
        continue

    else:
        value_AN = value_AN + value_BN
        value_BN = value_BN + input_BD
        print('an의 {}번째 ν•­μ˜ κ°’ : {}'.format(input_AN, value_AN))
        print('bn의 {}번째 ν•­μ˜ κ°’ : {}'.format(input_AN, value_BN))
        print()
        n+=1


# an의 κ³„μ°¨μˆ˜μ—΄ bn을 μ΄μš©ν•˜μ—¬ an을 κ΅¬ν•œλ‹€!
# n^2 + n + 1 = an

value_AN = input_AN ** 2 + input_AN + 1
print('an의 {}번째 ν•­μ˜ κ°’ : {}'.format(input_AN, value_AN))

πŸ“Œ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄

  • μ„Έ 번째 항은 두 번째 ν•­κ³Ό 첫 번째 항을 λ”ν•œ 합이닀.
  • a1 = 1, a2 = 1이고 n>2 μΌλ•Œ an = an-2 + an-1
# 1, 1, 2, 3, 5, 8 ...
#ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄

inputN = int(input('n μž…λ ₯'))

valueN = 0
sumN = 0

valuePreN2 = 0
valuePreN1 = 0

n = 1

while n <= inputN:
    if n == 1 or n == 2: #n이 1, 2μΌλ•Œ 
        valueN = 1 #ν•­μ˜ 값은 1이닀
        valuePreN2 = valueN
        valuePreN1 = valueN
        sumN += valueN #1, 2번째 ν•­κΉŒμ§€ λ”ν•œ κ°’
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, valueN))
        print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, sumN))
        n += 1
        continue

    else:
        valueN = valuePreN2 + valuePreN1 
        valuePreN2 = valuePreN1 # 1, 1, 2, 3, 5둜 κ°€μ •, PreN2λŠ” PreN1이 되고, N1은 value N이 λœλ‹€.
        valuePreN1 = valueN
        sumN += valueN
        print('{}번째 ν•­μ˜ κ°’ : {}'.format(n, valueN))
        print('{}번째 ν•­κΉŒμ§€μ˜ ν•© : {}'.format(n, sumN))
        n += 1

πŸ“Œ νŒ©ν† λ¦¬μ–Ό

  • 1λΆ€ν„° μ–‘μ˜ μ •μˆ˜ nκΉŒμ§€μ˜ μ •μˆ˜λ₯Ό λͺ¨λ‘ κ³±ν•œ 것
inputN = int(input('μ–‘μ˜ μ •μˆ˜ n μž…λ ₯ : '))
#for문을 μ΄μš©ν•œ νŒ©ν† λ¦¬μ–Ό κ΅¬ν•˜κΈ°
result = 1

for n in range(1, inputN+1):
    result *= n

print('{}νŒ©ν† λ¦¬μ–Ό : {}'.format(inputN, result))

#while문을 μ΄μš©ν•œ νŒ©ν† λ¦¬μ–Ό κ΅¬ν•˜κΈ°
n = 1
result = 1

while n <= inputN:
    result *= n

    n += 1

print('{}νŒ©ν† λ¦¬μ–Ό : {}'.format(inputN, result))

print()

#μž¬κ·€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•œ νŒ©ν† λ¦¬μ–Ό κ΅¬ν•˜κΈ°

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)))

πŸ“Œ κ΅°μˆ˜μ—΄

  • μ—¬λŸ¬ 개의 항을 λ¬Άμ—ˆμ„ λ•Œ κ·œμΉ™μ„±μ„ κ°€μ§€λŠ” μˆ˜μ—΄

좜처 : 제둜베이슀 데이터 슀쿨

inputN = int(input('nν•­ μž…λ ₯ : '))

flag = True

n=1; nCnt=1; searchN = 0

while flag:

    for i in range(1, (n+1)):
        if i == n:
            print('{}'.format(i), end='')
        else:
            print('{}, '.format(i), end='')
        nCnt += 1
        if nCnt > inputN:
            searchN = i
            flag = False
            break
    print()
    n += 1

print('{}ν•­ : {}'.format(inputN, searchN))

πŸ“Œ μˆœμ—΄

  • nκ°œμ—μ„œ r개λ₯Ό νƒν•˜μ—¬ λ‚˜μ—΄ν•˜λŠ” 경우의 수
  • nPr = n *(n-1) ..... (n-r+1) & n! / (n-r)!
#8P3 , 7P5

numN = int(input('numN μž…λ ₯ : '))
numR = int(input('numR μž…λ ₯ : '))

result = 1

for i in range(numN, numN-numR, -1): #nμ—μ„œ n-rκΉŒμ§€ -1 단계
    print('n : {}'.format(i))
    result *= i

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

πŸ“Œ μ›μˆœμ—΄

  • μ‹œμž‘κ³Ό 끝의 ꡬ뢄이 μ—†λŠ” μˆ˜μ—΄
  • n! / n & (n-1)!

πŸ“Œ μ‘°ν•©

  • μˆœμ„œμ™€ 상관없이 r개λ₯Ό μ„ νƒν•˜μž.
  • nCr = n! / r! * (n-r)! & nPr / r!
#nCr = nPr / n! 곡식을 이용
numN = int(input('numN μž…λ ₯ : '))
numR = int(input('numR μž…λ ₯ : '))

resultP = 1
resultR = 1
resultC = 1

for n in range(numN, numN-numR, -1): #nPr을 κ΅¬ν•˜λŠ” 곡식

    print('n : {}'.format(n))
    resultP *= n

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

for i in range(numR, 0, -1): #νŒ©ν† λ¦¬μ–Όμ„ κ΅¬ν•˜λŠ” 곡식

    print('i : {}'.format(i))
    resultR *= i

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

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

πŸ“Œ ν™•λ₯ κ³Ό μ‘°ν•©

  • 쑰합을 μ΄μš©ν•˜μ—¬ ν™•λ₯  κ΅¬ν•˜κΈ°

좜처 : 제둜베이슀 데이터 슀쿨

def combination():

    numN = int(input('numN μž…λ ₯ : '))
    numR = int(input('numR μž…λ ₯ : '))

    resultP = 1
    resultR = 1
    resultC = 1

    for i in range(numN, numN-numR, -1):
        resultP *= i
    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))

    return resultC

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

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

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

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