Algorithm/알고리즘 문제
[BOJ/Python] 11659번 구간 합 구하기 4
은 딩
2023. 1. 9. 00:14
https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
누적합으로 풀어야 시간 초과가 안난다.
맞은 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
list_a = list(map(int, input().split()))
sum = []
sum.append(list_a[0])
for i in range(1, n):
sum.append(sum[i-1]+list_a[i])
for i in range(m):
x, y = map(int, input().split())
if x== y:
print(list_a[x-1])
elif x == 1:
print(sum[y-1])
else:
print(sum[y-1]-sum[x-2])
더 깔끔한 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
list_a = [0] + list(map(int, input().split()))
sum = []
temp = 0
for i in range(n+1):
temp += list_a[i]
sum.append(temp)
for _ in range(m):
i, j = map(int, input().split())
print(sum[j] - sum[i-1])