https://www.acmicpc.net/problem/1292
a, b를 입력받기 -> b번째 수까지 규칙대로 리스트에 추가 -> 슬라이싱 이용해 sum() 출력하는 방식으로 구현했다.
a, b = map(int, input().split())
nums = []
for i in range(1, b + 1):
for _ in range(i):
nums.append(i)
print(sum(nums[a - 1 : b]))
전체 수열의 a번째부터 b번째까지만 필요한데 굳이 리스트를 만들어서 첫번째까지 다 추가하는 것은 메모리 낭비이다...
따라서 리스트를 사용하지 않게끔 코드를 바꾸어봤다.
a, b = map(int, input().split())
total, count = 0, 0
num = 1
while count < b:
for _ in range(num):
count += 1
if count >= a:
total += num
if count == b:
break
num += 1
print(total)
이렇게 하면 몇번째 숫자인지 num 변수로 카운트하다가 a부터 b까지만 누적합을 구하기 때문에 더 효율적이다!