[BOJ] 1292 쉽게 푸는 문제
이 문제는 이중 반복문을 사용해서 수열 배열을 만들고 정해진 범위 (1~1000)의 구간에 대응할 수 있도록 해야했다.
나는 구간이 1000까지라고 해서 range(1, 1001)
로 반복문을 실행했는데 이는 착각이었다. 구간이 46까지만 해도 len(array)
가 1036
이 되기 때문에 입력하는 범위내에서 대응이 가능하다.
나의 풀이
a, b = map(int, input().split())
array = []
result = 0
for i in range(1, 46):
for j in range(i):
array.append(i)
for k in range(a, b+1):
result += array[k-1]
print(result)
값을 더해줄 때 굳이 하나의 반복문을 더 만들지 않고 구간합을 구할 방법이 있을까? 해서 찾아봤더니 다음과 같이 할 수 있었다.
sum(array[구간1:구간2])
구간에 대해서 헷갈려서 slice
구간에 대해서 알아봤다. => range
와 동일하다.
a = [0, 1, 2, 3, 4, 5]
a[0:4] # index 0 부터 4개 요소
print(a[0:4]) # [0, 1, 2, 3]
a, b = map(int, input().split())
array = []
for i in range(1, 46):
for j in range(i):
array.append(i)
print(sum(array[a-1:b]))