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의 개수가 커지면 커질수록 첫 번째 방식의 부담이 커질 것이다.
댓글남기기