now is better than never

[easyupclass] 초심자를 위한 빅데이터 분석 및 머신러닝 응용과정(파이썬) 17강 - Quiz 본문

Python/초심자를 위한 빅데이터 분석 및 머신러닝 응용과정

[easyupclass] 초심자를 위한 빅데이터 분석 및 머신러닝 응용과정(파이썬) 17강 - Quiz

김초송 2022. 10. 25. 01:59

Quiz 1

  • list 안에 list 합 구하기
def sum_ls(ls):
    result = 0
    for i in ls:
        if type(i)==list:
            result += sum_ls(i)
        else: 
            result += i
    return result

- 정답 코드는 list comprehension으로 한 줄 코드

 

Quiz 2

  • 탐욕 알고리즘
    - 매 순간마다 최선의 선택을 하는 것
    - 가장 좋다는 것(= 가장 큰 값)을 선택해 나가며 최종적인 해답을 구하는 알고리즘
    - 전체는 고려하는 것이 아니라 부분적으로 나누어 문제에 대한 최적의 해답을 구함
  • 지불해야 하는 금액이 5,990원일 때, 10, 50, 100, 500원 동전으로 동전 수가 가장 적게 지불하는 방법?
coin = [500, 10, 100, 50]


def least_coin(amount, ls):
    coin_ls = []
    ls.sort(reverse = True)
    for i in ls:
        num = amount // i
        amount = amount % i
        coin_ls.append([i,num])
    return coin_ls
    
least_coin(5990, coin)

- 정답 코드는 총 동전 갯수도 return에 포함

 

Quiz 3

  • 재귀 알고리즘
    함수 내에서 연산이 끝날 때 까지 자기 자신을 호출
  • loop문을 사용하지 않고 구구단 7단 작성
  • 맨 처음에 종료 조건 : return
    else: return 자기 자신 = 재귀
# 정답 코드
def multi_table(n):
    if n == 0:
        return 
    else:
        print("7 x {} = {}".format(10-n,7*(10-n)))
        return multi_table(n-1)

 

  • 피보나치 수열 
    처음 두 수를 1로 두고 앞 두 숫자의 합을 다음 항으로 세운 뒤 지속적으로 두 수의 합을 반복하며 다음 항에 나열하는 수열
    -> 재귀 함수로 구현 가능
def fibo_seq(n):
    if n<=0:
        return 0
    elif n==1:
        return 1
    else:
        return fibo_seq(n-1) + fibo_seq(n-2)
    
for n in range(1, 11):
    print(fibo_seq(n))