본문 바로가기
파이썬/파이썬 알고리즘

파이썬 백준 8393번 수학 합

by Go! Jake 2021. 2. 16.

8393번: 합 (acmicpc.net)

 

8393번: 합

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

www.acmicpc.net

위와 같이 1+....+n까지의 합을 구하도록 의미한다.

과거 고등학교 수학에서 배웠듯이 n*(n+1)/2로 나타낼 수 있다.

풀이 과정

우선 최근 공부하고 있던 for문에 대해 활용하고자 하였다.

z=int(input())
n=range(1,z+1)
b=0
for a in n:
 b+=a 
 if a==z:
 print(b)

z=int(input()) # 기본 입력 인자를 받음. 숫자 입력 시 int type으로 출력 됨.
n=range(1,z+1) # for문에서 쓰일 예정. range에서 max값(2번째 index)은 -1이 되니, +1을 해준다.
b=0 # 최종으로 더해 나갈 변수를 명명 해 준다.
for a in n: # for문으로 구성하면 range 내에서 1부터 z까지 추출된다.
    b+=a # 복합입력연산자로, b라는 변수에 a가 변하면서 계속해서 더해진다.
    if a==z: # 마지막으로 a가 z (range에서 마지막 출력 숫자)에 도달하면 print한다.
    print(b)

오답 노트

아래와 같이 a+=a로 구성하는 경우, a의 n-1항에서 a를 더해 a의 n항으로 가는 컨셉으로 이해하고 잘 못 작성하였다.

이 경우 예를 들어 n이 결과적으로 2인 경우, n=1: a=0+1, n=2: a=1+1과 같이 진행되기 때문이다. 따라서 별개의 변수를 지정하여 a_n = a_n-1+b_n-1로 맞춰주는 것이 간편하다.

z=int(input())

a=0

n=range(1,z+1)

for a in n:

a+=a

if a==z:

print(b)

 

 

댓글