문제
풀이
- 내장함수 sum + slicing 으로 처음에 접근하였지만 시간초과로 인해 실패하였다.
- sum은 내부적으로 for문으로 구현하기 때문에 단순 반복문으로 접근하면 안되는 문제였다.
- dp table을 만들어서 누적합을 기록하여 빠르게 접근하였다.
코드
import sys
input = sys.stdin.readline
def solve(d: list, start: int, end: int) -> int:
return d[end-1] - d[start-1] + nums[start-1]
if __name__ == '__main__':
n, m = map(int, input().split())
nums = list(map(int, input().split()))
d = [0] * n
d[0] = nums[0]
for x in range(1, n):
d[x] = d[x-1] + nums[x]
for _ in range(m):
i, j = map(int, input().split())
print(solve(d, i, j))
결과
출처 & 깃허브
boj 11659
github