우당탕탕 파이썬 with 하루하나 알고리즘

백준 8393 파이썬 - for문을 활용하여 누적 합 구하기

hyxndy 2022. 3. 21. 10:24

백준 8393번 - 합 with python

Q. n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

입력> 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.

출력> 1부터 n까지 합을 출력한다.


되게 간단한 문제! 차근차근 쫓아오면 된다~

먼저 n을 입력받아보자.

n = int(input())

n은 입력함수를 통해 받아올 수 있다.

이제 이 n이 주어졌을 때 1부터 n까지 합해야 한다.

 

일단 for문을 먼저 생각해보자.

우리는 1부터 n까지 더해야하므로, for문의 범위도 1부터 n까지 설정해야 한다.

range(1,n)을 범위로 지정해주면 되겠다고 생각하는 분들이 있을 것 같다.

하지만 지난 포스팅에서도 말했듯이, range(1,n)은 1이상 n미만을 의미한다. 즉, n은 범위에 포함하지 않는것이다.

이 문제점을 해결해주려면 n에 1을 더해준다.

range(1,n+1)로 해서 1이상 n+1미만으로 범위를 지정해주어도 좋고,

어차피 우리는 합에 대해 구하는데, 0은 더해도 변화가 없으므로 그냥 range(n+1)이라고 지정해주어도 좋다.

 

for문을 작성해보면

i=1
for i in range(n+1):
	i+=1

로 작성해줄 수 있다. 그러면 i가 0에서부터 하나씩 더해진다.

하지만 여기서 i는 그냥 하나씩 더해질 뿐, 누적해서 합산이 되지 않는다.

그러려면 새로운 변수를 지정하여 그곳에 누적합을 더해주면 된다.

 

바로 sum+=i를 이용해보자.

sum+=i는 sum= sum+i를 나타낸다.

즉 i가 0일때부터 i가 하나씩 더해질때, 그 i를 모두 더하는 것이다.

 

i는 1에 대한 누적합,

sum은 i에 대한 누적합이라고 생각하면 편할 것이다.

 

그래서 다시 코드를 정리해보면

n = int(input())
i=1
sum=0

for i in range(n+1):
    sum +=i
    i += 1
    
print(sum)

가 되고, for문을 마무리 한 후 sum에 대한 값을 출력시킨다.