본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1378번 : 수열의 합

by 빛밤하늘 2021. 11. 29.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

수열의 합

동렬이는 수학 문제를 풀다 다음과 같은 수열을 보았다. $S_n = (1) + (1 + 2) + (1 + 2 + 3) + (1 + 2 + 3 + 4) + ... + (1 +  ... + n)$ 임의의 정수 $n$이 주어질 때 이 수열의 합 $S_n$을 구하는 프로그램을 작성하시

codeup.kr

 

 

생각해 볼 점

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의 공식
수열의 합 Sn의 공식

문제에 나오는 수열의 합 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)

 

 

제출 결과

CodeUp 1378번 : 수열의 합에서 코드 제출 결과
CodeUp 1378번 : 수열의 합에서 코드 제출 결과

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글