문제
https://www.acmicpc.net/problem/1292
1이 한 번, 2이 두 번, 3이 세 번… 그리고 n이 n번 등장하는 수열(1 2 2 3 3 3 4 4 4 4 5…)을 만들고, 특정 구간의 합을 구하는 계산한다.
구간의 시작과 끝을 나타내는 정수 A, B (1 ≤ A ≤ B ≤ 1,000)를 입력으로 받는다.
풀이
수열의 최대 길이가 1000이므로 수열을 직접 구현한 뒤 합을 구한다.
코드
import sys
# 수열 구현
ss = []
i = 1
while len(ss) <= 1000: # 수열의 길이가 1000이 될 때까지 반복
for _ in range(i):
ss.append(i) # i는 값만큼 등장하도록 한다.
i += 1
# 입력
s, e = map(int, sys.stdin.readline().split())
# 출력
print(sum(ss[s - 1:e]))
결과