[백준/파이썬] 11659 구간 합 구하기4

#문제링크

https://www.acmicpc.net/problem/11659

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net

#나의풀이

import sys

if __name__ == '__main__':
    count, times = map(int, sys.stdin.readline().split())
    number = list(map(int, sys.stdin.readline().split()))
    number.insert(0,0)

    for i in range(1, count+1):
        number[i] += number[i-1]

    for _ in range(times):
        s, e = map(int, sys.stdin.readline().split())

        print(number[e]-number[s-1])

#해설

간단하게 슬라이스해서 합을 구했더니 시간초과가 떳다.

숫자를 받은 배열에 0번째에 0을 넣어주고 각 이전값을 더해주는 방식으로 누적합을 만들어주었다.

이후 시작지점과 끝지점을 받고 끝지점과 시작지점-1지점을 뺴줘 그 부분의 합을 구했다