프로그래밍/Python

백준_python 11659번 구간 합 구하기 4 (누적합, 시간초과)

O'bin 2024. 4. 27. 21:03

<문제 링크>

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

 

<정답 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sys
input = sys.stdin.read
data = input().split()  # 한번에 입력 받기
 
n, m = map(int, data[0:2]) 
nums = list(map(int, data[2:n+2]))
 
sums = [0* (n+1)      # 누적합 저장할 sums 배열 초기화
for i in range(1, n+1):
    sums[i] = sums[i-1+ nums[i-1]
 
index = n+2
results = []
for _ in range(m):
    a = int(data[index])
    b = int(data[index + 1])
    index += 2
    results.append(sums[b] - sums[a-1])
 
print("\n".join(map(str, results))) # results 값들 한줄씩 출력
cs

 

누적합으로 풀지 않으면 시간초과

 

 

🔷 누적합이란?