알고리즘(Algorithm)

1부터 10까지 숫자를 합하는 알고리즘

leebaro 2017. 9. 30.
728x90


가장 기초적인 알고리즘인 범위내의 숫자를 합하는 알고리즘이다.


숫자를 합하는 알고리즘은 대표적으로 2가지 방법이 있는데, 첫 번째 방법은 반복문을 이용해 숫자를 더하는 방식이다. 이 방식은 쉽지만 시작과 끝 숫자의 차이가 크다면 그만큼 반복을 해야하기 때문에 성능에 영향을 줄 수 있다.

두 번째 방법은 천재 수학자인 가우스가 사용했다고 알려진 방법이다. 공식은 아래와 같다. 


$$\frac{n(n+1)}{2}$$


1부터 100까지 더하는 문제라면 \(\frac{100(100+1)}{2}\) 이다.  이와 같은 알고리즘을 이용하면 반복문을 사용하지 않고 한번의 계산으로 값을 구할 수 있다. 그림으로 보면 아래와 같다. 제일 앞의 숫자와 제일 마지막 숫자의 합을 더하면 항상 101이 나온다. 그럼 1 부터 시작해 마지막 50번째가 되면 50+51 / 2가 마지막 계산이 된다. 이러한 이유로 2로 나누어 주는 것이다.





1. 1부터 10까지 숫자를 합하는 첫 번째 알고리즘


In [5]:
def sum_num(num):
    total_num = 0
    for i in range(1, num+1):
        total_num += i
    return total_num

print("1부터 10까지 합계")
print(sum_num(10))
print("\n")
print("1부터 100까지 합계")
print(sum_num(100))
1부터 10까지 합계
55


1부터 100까지 합계
5050


2. 1부터 10까지 숫자를 합하는 두 번째 알고리즘



In [3]:

# 이 방법이 성능적으로 효과적이다. def sum_num2(num): return num * (num + 1) / 2 print("1부터 10까지 합계") print(sum_num2(10)) print("\n") print("1부터 100까지 합계") print(sum_num2(100))

1부터 10까지 합계
55.0


1부터 100까지 합계
5050.0



Reference


https://www.gilbut.co.kr/book/bookView.aspx?bookcode=BN001731&page=1&TF=T

https://tzanga.wordpress.com/2012/11/06/%EC%B4%88%EB%93%B1%ED%95%99%EA%B5%90-3%ED%95%99%EB%85%84/


728x90

'알고리즘(Algorithm)' 카테고리의 다른 글

절대값 알고리즘  (0) 2017.08.20