1부터 N까지의 합 계산하는 알고리즘

일반적인 방식

1부터 N까지의 합을 차례대로 계산하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def sum_n(n):
    sum = 0  # 반환할 값을 저장할 변수

    for i in range(1, n + 1):  # 1부터 N까지의 합을 계산하는 반복문
        sum += i

    return sum


def main():
    print("1부터 N까지의 합을 계산합니다.")
    n = int(input())  # 값을 입력받아 int()형태로 저장함

    print(f"1부터 {n}까지의 합 : {sum_n(n)}")


if __name__ == "__main__":
    main()

가우스 방식

1부터 N까지의 합이라면 (1+N) + {2+(N-1)} + {3+(N-2)} + … 식으로 더 하면 모두 같은 N+1이 n/2 만큼 나오므로

$\frac{n(n+1)}{2}$ 의 식을 만들 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def sum_n(n):
    sum = (n * n + n) / 2  # 반환할 값을 저장할 변수

    return int(sum) # 실수 형태로 반환하니 int로 정수형으로 바꿔줌


def main():
    print("1부터 N까지의 합을 계산합니다.")
    n = int(input())  # 값을 입력받아 int()형태로 저장함

    print(f"1부터 {n}까지의 합 : {sum_n(n)}")


if __name__ == "__main__":
    main()

정리

첫 번째 방식은 덧셈을 N만큼 한다. N만큼의 덧셈을 한다. 두 번째 방식은 곱셈 1번, 덧셈 1번, 나눗셈 1번을 한다.

컴퓨터가 계산할 때 덧셈 보다 곱셈과 나눗셈이 더 부담이 가기는 하지만 N의 개수가 커지면 커질수록 첫 번째 방식의 부담이 커질 것이다.

댓글남기기