밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
생각해 볼 점
1. 다른 방법으로도 풀어보기
저는 이 문제를 풀 때 CodeUp에서 제공하는 문제 분류에 따라 중첩 반복문을 이용해서 풀었습니다.
하지만 등차수열의 합 공식을 사용해서 중첩 반복문을 사용하지 않고,
반복문을 한 번만 사용해도 문제를 해결할 수 있습니다.
또는 문제에 나오는 수열의 합 Sn의 공식에서 똑같은 숫자들끼리
각각 묶어서 더하는 방법으로도 계산할 수 있습니다.
직접 한 번 해보시길 바랍니다.
예제 설명
1. 첫 번째 예제
- 입력
5
- 출력
35
- 설명
입력한 임의의 정수 n은 5입니다.
따라서 수열의 합 Sn의 값은
(1) + (1 + 2) + (1 + 2 + 3) + (1 + 2 + 3+ 4) + (1 + 2 + 3 + 4 + 5) = 35입니다.
생각한 풀이 과정
문제에 나오는 수열의 합 Sn 공식에는 친절하게도 규칙을 유추할 수 있게 괄호가 묶여 있습니다.
빨간 네모인 괄호 부분을 각각 어떻게 계산할지 생각해봅니다.
n <= 50인 n을 입력하고, int형으로 변환합니다.
n = int(stdin.readline())
수열의 합 Sn의 값을 저장할 변수 sn을 선언하고, 0으로 초기화합니다.
sn = 0
- 외부 반복문 시작
각 괄호 부분에서 마지막 숫자가 1부터 n까지이므로 1부터 n까지 반복합니다.
for num1 in range(1, n + 1):
- 내부 반복문 시작
각 괄호에서 1부터 외부 반복문의 현재 숫자인 num1의 값까지 Sn에 더해나가는 반복문입니다.
1부터 num1까지 반복합니다.
for num2 in range(1, num1 + 1):
변수 sn에 현재 숫자인 num2의 값을 더해줍니다.
sn += num2
- 내부 반복문 끝
- 외부 반복문 끝
수열의 합인 Sn의 값을 저장하고 있는 변수 sn의 값을 출력합니다.
print(sn)
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# n <= 50인 n을 입력하고, int형으로 변환합니다.
n = int(stdin.readline())
# 수열의 합 Sn의 값을 저장할 변수를 선언합니다.
# 0으로 초기화합니다.
sn = 0
# 1부터 n까지 반복합니다.
for num1 in range(1, n + 1):
# Sn에서 각 괄호 안의 숫자를 더해 나가는 반복문입니다.
# 1부터 num1까지 반복합니다.
for num2 in range(1, num1 + 1):
# sn에 현재 숫자를 더해줍니다.
sn += num2
# 수열의 합 Sn의 값을 출력합니다.
print(sn)
제출 결과
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
※ 공감 버튼❤과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍
댓글