💬 오늘의 공부시간 PM 10:00~ AM 02:30

12시 30분이 고비다.
감기는 다 나은것 같은데 기침은 오지게 나온다.
요즘 회사에서 에너지드링크 없음 못버틸 정도로 몸이 무겁다.
요번주는 사실 너므너므 딴짓만 하고싶다. ㅠㅠㅠ

🔥 3주차 todo 리스트 (5/15~5/21)

파이썬 (중급문풀 5)
파이썬 (중급문풀 6~7)
파이썬 (중급문풀 8)
기초수학 (기초 1~2)
기초수학 (기초 3)
기초수학 (기초 4)
기초수학 (기초 5~6)



기초수학 (기초 7)
기초수학 (기초 1)
기초수학 (기초 2)
기초수학 (기초문풀 1)
기초수학 (기초문풀 2~3)
자료구조/알고리즘 (자료구조 1~2)
자료구조/알고리즘 (자료구조 3)
자료구조/알고리즘 (자료구조 4)

📝 weekly 데이터 사이언스 스쿨 퀴즈
📝 재복습weekly 데이터 사이언스 스쿨 퀴즈


💻 핵심 내용 정리

📝 진법이란?

  • 특정 숫자 몇개를 사용하여 수를 표시하는 방법

10진수 →

binary : bin() → 2진수

print('2진수: {}'.format(bin(dNum)))

octal : oct() → 8진수

print('8진수: {}'.format(oct(dNum)))

Haxadecimal : hex() → 16진수

print('16진수: {}'.format(hex(dNum)))

  • 10진수를 X진수로 변환 : format()함수
print('2진수: {}'.format(format(dNum,'#b')))
print('8진수: {}'.format(format(dNum, '#o')))
print('16진수: {}'.format(format(dNum, '#x')))

print('Type of bin(dNum): {}'.format(type(format(dNum,'#b'))))
print('Type of oct(dNum): {}'.format(type(format(dNum,'#o'))))
print('Type of hex(dNum): {}'.format(type(format(dNum,'#x'))))

  • X진수를 10진수로 변환 : format()함수
print('2진수(0b11110) -> 10진수({})'.format(int('0b11110',2)))
print('8진수(0o36) -> 10진수({})'.format(int('0o36',8)))
print('16진수(0x1e) -> 10진수({})'.format(int('0x1e',16)))

  • X진수를 X진수로 변환 : format()함수
print('2진수(0b11110) -> 8진수({})'.format(oct(0b11110)))
print('2진수(0b11110) -> 10진수({})'.format(int(0b11110)))
print('2진수(0b11110) -> 16진수({})'.format(hex(0b11110)))

print('8진수(0o36) -> 2진수({})'.format(bin(0o36)))
print('8진수(0o36) -> 10진수({})'.format(int(0o36)))
print('8진수(0o36) -> 16진수({})'.format(hex(0o36)))

print('16진수(0x1e) -> 2진수({})'.format(bin(0x1e)))
print('16진수(0x1e) -> 8진수({})'.format(oct(0x1e)))
print('16진수(0x1e) -> 10진수({})'.format(int(0x1e)))

📝 수열이란?

  • 규칙성을 가지고 나열되어 있는 수들.

an = 일반항


📝 항들의 합과 항의 관계

  • 특정항은 특정항까지의 합에서 특정항 이전의 항까지의 합과 같다

an = sn -s(n-1)
단, n >= 2 / a1 = s1


📝 등차수열

  • 연속된 두 항의 차이가 일정한 수열

등차수열 ( 일반항 ) 공식
an = a1 + (n-1) * d
d = 공차

등차수열 ( 합 ) 공식
sn = n (a1+an) / 2


📝 등차중항

  • 연속된 세 항에서 가운데 항

📝 등비수열

  • 연속된 두 항의 비가 일정한 수열
  • 등비수열 규칙성을 이용해서 일반항을 구할 수 있다.

등비수열 (일반항) 공식
an = a1 * r^(n-1)
r = 공비

등비수열 (합) 공식
sn = a1 * (1-(r^n) / (1-r)


📝 등차중항

  • 연속된 세 항에서 가운데 항
  • 연속되는 세 항 중 가운데 항은 가운데 항의 거듭제곱과 앞, 뒤로 나란한 항 두개를 곱한 것과 같다.

실습_02

# 등비수열

# n번째까지 항의 값을 출력 : 일반항
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


# n번째 항의 값을 출력 : 일반항(공식이용)
inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

# an = a1 * r^(n-1)
valueN = inputN1 * (inputR ** (inputN - 1))
print('{}번째 항의 값: {}'.format(inputN, valueN))

# n번째까지 항의 값의 합을 출력 : 항들의 합(반복문)
inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

valueN = 0  # n번째까지의 값을 모르기 때문에 0
sumN = 0    # n번째까지의 합도 모르기 때문에 0
n = 1   # while문 이용으로 무한루프 방지
while n <= inputN:

    if n == 1:
        valueN = inputN1
        sumN += valueN
        # print('{}번째 항까지의 합 : {}'.format(n, sumN))
        n += 1    # 무한 루프 방지
        continue   # 계속실행 : 처음으로 돌아가기

    valueN = valueN * inputR   # a1(첫항) * 사용자가 입력한 공비 = a2항
    sumN = sumN + valueN    # a2항까지의 합
    # print('{}번째 항까지의 합 : {}'.format(n, sumN))
    n += 1

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


# n번째 항까지의 값의 합을 출력  : 항들의 합(공식)
inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

# sn = a1 * (1 - r^n) / (1-r)
sumN = inputN1 * (1 - (inputR ** inputN)) / (1 - inputR)
print('{}번째 항까지의 합 : {}'.format(inputN, int(sumN)))

📝 계차수열

  • 어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열

실습_03

# 계차수열
# 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 입력: '))
inputBN = 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 = valueAN + valueBN
    valueBN = valueBN + inputBN
    print('an의 {}번째의 항의 값: {}'.format(n, valueAN))
    print('bn의 {}번째의 항의 값: {}'.format(n, valueBN))
    n += 1

print('an의 {}번째의 항의 값: {}'.format(inputAN, valueAN))
print('bn의 {}번째의 항의 값: {}'.format(inputAN, valueBN))


# n^2 + n + 1 = an
valueAN = inputAN ** 2 + inputAN + 1
print('an의 {}번째 항의 값: {}'.format(inputAN, valueAN))

📝 피보나치 수열

  • 세번째 항은 두번째 항과 첫번째 항을 더한 합이다.

실습_04

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

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

📝 팩토리얼

  • 1부터 양의 정수 n까지의 정수를 모두 곱한것

실습_05

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

💡 오늘을 마무리하면서 ...

나 진짜 수학 못하는데 무조건 이해 할때까지 들어봐야겠다
이쯤되면 컴퓨터 과목도 어느 정도는 외우는 암기과목인것 같은 느낌적인 느낌....

😃 Busy Study _ 새벽반 PM 10:00 ~ AM 2:30

여러분 화이팅!! 우리 모두 다 잘 될거예요!

profile
늦깎이 DA/DS 취준생, 이곳은 스터디노트 겸 성장기록장(소통환영이요💜)

0개의 댓글