[BOJ] 1292 쉽게 푸는 문제

[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]))


© 2021. All rights reserved.