농경제학도의 지식창고

[Python] '1부터 n까지의 합 구하기' 알고리즘 본문

프로그래밍 언어/Python 알고리즘

[Python] '1부터 n까지의 합 구하기' 알고리즘

Guk developer 2021. 4. 30. 00:38
본문은 <모두의 알고리즘 with 파이썬>(길벗, 2017)을 학습하고 개인 학습용으로 정리한 내용입니다.

 

안녕하세요, 오늘은 Python '1부터 n까지의 합 구하기' 알고리즘에 대해 알아보겠습니다.

 

'1부터 n까지의 합' 구하기 알고리즘을 구현하는 방법은 크게 2가지가 있습니다.

1. 1부터 n까지 오름차순으로 정직하게 하나씩 더해나가는 방식

ex. 1+2=3, 3+3=6, 6+4=10...

 

2. 등차수열의 합 공식 활용

(세계 3대 수학자 가우스가 초등학교 때 고안한 방식으로 널리 알려져 있죠)

본문에서는 1, 2를 실제 Python 코드로 구현해보겠습니다


#1. 하나씩 더해나가는 방식

0. 사용자가 입력한 인수'n'이라는 매개 변수로 받습니다

 

1. 함수 내에서 1~n까지의 합을 저장할 지역변수 'sum_n'의 값을 초기값 '0'으로 설정합니다

 

2. for문, range 함수를 활용해 (1, n+1)까지 범위를 지정하고 'i' 변수를 지정해줍니다

 

3. for문 안에서 'sum_n' 변수에 1~n까지 순서대로 더합니다

 

4. 1~n까지 더한 값이 저정되어 있는 'sum_n' 변수를 반환합니다

 

(1~4를 함수(sum_num)로 구현하면 아래와 같습니다)

def sum_num(n):
    sum_n = 0
    for i in range(1, n + 1):
        sum_n = sum_n + i
    return sum_n

 

5. 그리고 함수를 원하는 인수와 함께 호출해주고 출력하면 값이 정상적으로 출력됩니다.

print(sum_num(10)) # 1부터 10까지의 합:55 출력

#2. 등차수열 공식

'등차수열의 합 공식'에 대해 간단히 설명하겠습니니다
항들간의 간격 일정한 수열을 우리는 '등차수열'이라고 부릅니다

1부터 n항까지 수열이 존재한다고 할 때, (1, n), (2, n-1), (3, n-2), (4, n-3)...[안에 있는 숫자들은 항들의 순서를 의미합니다]
1번째 항 + n번째 항 = 2번째 항 + n-1번째 항 = 3번째 항 + n-2번째 항... = A(상수) 이 성립함을 확인할 수 있습니다

A를 절반으로 나눈 값이 바로 '등차수열의 평균'입니다
따라서, '평균(A) X 항의 개수(n) = 수열의 모든 항들의 합(S)'인 것입니다
위 내용을 '1부터 n까지의 합'에 적용해보겠습니다
1, 2, 3, 4, 5...n은 간격1등차수열로 해석할 수 있습니다
평균은 '1번째 항 + n번째 항 / 2 = (1+n)/2' and 항의 개수 = n
따라서 1부터 n까지의 합 = (n+1) * n / 2임을 확인할 수 있습니다 

(다시 본론으로...)

 


0. 사용자가 입력한 인수'n'이라는 매개변수로 받은 후

 

1. '(n+1) * n / 2'를 반환해줍니다

def sum_num2(n):
    return n * (n + 1) / 2 

 

2. 그리고 함수를 원하는 인수와 함께 호출하고 출력하면 값이 정상적으로 출력됩니다.

print(sum_num2(10)) # 1부터 10까지의 합:55 출력

오늘은 이렇게 Python에서 '1부터 n까지의 합' 알고리즘에 대해 알아보았습니다.

다음번에 또 다른 '알고리즘에 대한 내용'으로 찾아오겠습니다.

Comments