Dev_from the Bottom

#9. Algorithm05_python) 1+2+4+7+11+16+22+...의 순서로 나열되는 수열의 20번째 항까지의 합계 본문

Algorithm_study

#9. Algorithm05_python) 1+2+4+7+11+16+22+...의 순서로 나열되는 수열의 20번째 항까지의 합계

고무라면 2022. 5. 10. 20:32

문제)

1 + 2 + 4 + 7 + 11 + 16 + 22 +... 의 순서로 나열되는 수열의 20번째 항까지의 합계 구하기

 

# 접근 전략

  • 각 항의 차를 나태는 수열(1,2,3,4...)를 활용하여 문제 속 수열 형태 구현
  • 누적하여 합계 리턴

 

step1) 밑그림 : 문제의 수열 형태 구현

a = 0                 # 각 항의 차를 나타내는 수열 : 1,2,3,4...
b = 1                 # 수열 1,2,4,7,11,16...

for i in range(20):   # 20번째 항
    print(b, end=' ') # 수열 1,2,4,7,11,16...
    a += 1
    b += a
    
 >>>
 
 1 2 4 7 11 16 22 29 37 46 56 67 79 92 106 121 137 154 172 191

 

step2) 정답 출력

a = 0                    # 각 항의 차를 나타내는 수열 : 1,2,3,4...
b = 1                    # 수열 1,2,4,7...
answer = 0               # 수열의 합

for i in range(20):      # 20번째 항
    # print(b, end=' ')  # 수열 1,2,4,7,11,16...
    answer += b          # 수열의 합
    a += 1
    b += a

print(f'수열 1,2,4,7,11,16,22,... 20번째 항까지의 합계 : {answer}')

>>>

수열 1,2,4,7,11,16,22,... 20번째 항까지의 합계 : 1350

 

step3) 메서드화

def algo_05():
    a = 0
    b = 1
    answer = 0
    for i in range(20):
        answer += b
        a += 1
        b += a
    return answer

print(f'수열 1,2,4,7,11,16,22,... 20번째 항까지의 합계 : {algo_05()}')

>>>

수열 1,2,4,7,11,16,22,... 20번째 항까지의 합계 : 1350

 

step4) 메서드 확장 : 사용자에게 입력받은 n을 파라미터로

def algo_05_extend(n):         # 파라미터 추가
    a = 0
    b = 1
    answer = 0
    for i in range(n):
        answer += b
        a += 1
        b += a
    return answer

n = int(input("n 입력 : "))    # 사용자에게 입력받도록
print(f'수열 1,2,4,7,11,16,22,...의 n번째 항까지의 합계 : {algo_05_extend(n)}')

>>>

n 입력 : 20
수열 1,2,4,7,11,16,22,...의 n번째 항까지의 합계 : 1350

 

# 소회

  • 파라미터로 n을 받는 형태의 문제 해결 성공!
  • 깔끔하게 주석 적는 연습 : 주석 내용은 둘째 치고, 줄이라도 맞추니 훨씬 정돈되어 보임
    • 내용적인 측면에서도 보는 사람이 이해하기 쉽게 주석 작성하자

 

Comments