-
[파이썬/Python] 백준 8393번(합) 단계별로 풀어보기 + ['+=' 에 관한 조금 더 자세한 설명]깜빡의 취미/파이썬을 합니다. 2021. 9. 12. 12:34728x90
문제는 아래와 같다.
# 필요한 지식
for문과 range 함수의 기본만 알고 있으면, 의외로 쉽게 문제를 풀 수 있다. 자세한 소개는 아래의 링크를 참고.
# 답안 예시 1 [소개]
[답안 예시 1] n = int(input()) r = 0 for i in range(1,n+1): r += i print(r)
# 답안 예시 1 [설명]
n = int(input())
우선 n을 입력할 수 있게 input 함수를 이용한다. 이때 n은 무조건 숫자일 것이기에 int 함수를 이용하여 정수형으로 특정해 준다.
r = 0본격적으로 for문을 시작하기 전에 문자를 하나 지정해 주어야 한다. 쉽게 말하자면, 이때 r은 상자다. 더해진 수들이 차곡차곡 쌓여 최종 결과를 출력하게 된다.
for i in range(1,n+1):
r += i1부터 n까지 더해 주어야 하니 range 함수의 범위는 (1, n+1)로 지정했다. 두 번째 줄은 r = r+i로도 표현할 수 있다. for문의 경우 특정 지점까지 계속해서 식이 반복되기 때문에, 매번 식을 초기화하지 않기 위해 상자 속에 숫자를 차곡차곡 담는 방식을 사용했다고 이해하면 좋다. 잠시 아래의 과정을 살펴 보자.
>>> for문 첫 번째 루프 1) r = 0, i = 1이 된다. 2) r += i -> r = r + i -> r = 0+1 = 1 3) r = 1이 된다. >>> for문 두 번째 루프 1) r = 1, i = 2가 된다. 2) r += i -> r = r + i -> r = 1+2 = 3 3) r = 3이 된다. >>> ...
2)에서 r = r + i이면 0 = 0+1이 되는 것이 아닌가 생각하는 분들이 있을 수 있다. 좀 더 자세히 보자.
그림을 통해 확인할 수 있는 것처럼, 굳이 따지자면 좌항의 r은 계산 결과이며, 우항의 r은 앞서 정해진 r값이다. 이건 파이썬 루프가 가지는 특징이라고도 볼 수 있는데, 여러 차례의 계산 과정을 한 줄로 압축해서 표현하였기 때문에 위와 같은 착각을 불러올 수 있는 것이다.
또 앞서 설명했던 바와 같이 이 식은 r += i로도 표현 가능한데, 결국 1부터 n까지 순차적으로 더하기가 반복되고 있다는 의미를 강조해주는 표현 방식이다.
결국 r은 일종의 보관소이며(앞서 상자라고도 했지만), i값이 루프를 돌며 소멸되지 않고 더해주는 역할이라 이해할 수도 있다. 어느 쪽이든, r이라고 해서 다 같은 r이 아니라는 것만 이해하면 된다.
print(r)
꼭 잊지 말고 print 함수를 이용하여 문제를 마무리하도록 하자. 문제에서는 값의 출력까지 요구하고 있기 때문이다.
# 여담(답안 예시 2)
위의 내용을 이해한다면 이렇게도 식을 바꿔볼 수 있다.
[답안 예시 2] n = int(input()) r = n for i in range(n): r += i print(r)
# 의외로 비슷한 방식의 식을 활용할 때가 종종 있습니다. 처음부터 바로 모든 걸 이해할 필요는 없지만, 문제를 풀다 막막한 마음이 들면 기존의 것들을 돌아보는 것이 큰 도움이 된다 느낍니다. 나름대로 이해한 방식으로 설명해 보았는데, 잘 전달이 되었을지는 모르겠습니다. 오늘도 방문해주신 분들께 모두, 진심으로 감사드립니다. 혹시 재미있으셨다면 구독과 공감도 부탁드릴게요(꾸벅).
'깜빡의 취미 > 파이썬을 합니다.' 카테고리의 다른 글
[파이썬/Python] 텍스트 RPG(2): 튜토리얼(= 첫 전투) (4) 2021.09.26 [파이썬/Python] 텍스트 RPG(1): 이름, 기본 스텟 (0) 2021.09.19 [파이썬/Python] 백준 10950번(A+B - 3) 단계별로 풀어보기 + [for문 대신 while문 써보기, 더하는 값 잘못 입력했을 때 원점으로 돌리기] (0) 2021.09.05 [파이썬/Python] 백준 2739번(구구단) 단계별로 풀어보기+ [범위 넘어갈 때 오류 만들기 + 구구단 그 너머를 위한 식] (0) 2021.08.29 [파이썬/Python] for문 기본, 그리고 range 함수 (3) 2021.08.29