https://www.acmicpc.net/problem/1292
# 쉽게 푸는 문제
A,B = map(int,input().split()) # A=시작, B=끝
count = 0 # A의 값
result = 0 # A의 값을 다 더한 최종 결과
i = 1 # A에서 뺄 것
while A != B+1: # 1 ≤ A ≤ B ≤ 1,000
count += i
if A - count > 0:
i += 1
else:
result += i # A의 최종결과 저장
A+=1 # A를 1 증가해서 다시 A에 해당하는 숫자 찾기
i = 1 # i 초기화
count = 0 # count 초기화
print(result)
# 3 >= 1 + 2 -> 해당값 : 2
# 7 >= 1 + 2 + 3 & 7 < 1 + 2 + 3 + 4 -> 해당값 : 4
다른사람 풀이
a,b = map(int,input().split())
arr = [0]
for i in range(46):
for j in range(i):
arr.append(i)
print(sum(arr[a:b+1]))
a, b의 범위는 1000까지였기 때문에 반복문의 범위는 46까지만 구해도 된다. (len(arr) = 1036)
i값을 기준으로 이중 반복문을 사용하는데 빈 arr에 i를 추가한다. 값이 1부터 arr에 들어간다. (j를 추가하는 것이 아님!!)
어차피 범위가 1000까지라 배열에 다 넣어서 슬라이싱으로 범위를 나눠 누적 합을 구했다.