성장일기

[python] 백준 11441 - 합 구하기 본문

알고리즘 문제

[python] 백준 11441 - 합 구하기

김몽몽 2022. 1. 11. 09:58

첫째 줄에 개수N

둘째 줄에 A1, A2, ..., AN

셋째 줄에 구간의 개수 M

넷째 줄부터 M개의 줄까지는 각 구간 i와 j

 

🧨누적합 문제

input만 sys.stdin.readline으로 바꿔줘도 풀린다

 

🎇

{A1, A2, ... , An}이 있을 때, Si = A1 + A2 + ... + Ai라고 하면,

Ai + Ai + 1 + ... + Aj - 1 + Aj는 Sj - Si - 1로 표현할 수 있다

 

import sys
input=sys.stdin.readline

n=int(input().rstrip())
arr=list(map(int,input().split()))

prefix=[]
temp=0
for i in arr:
    temp+=i
    prefix.append(temp)  #누적합 더해서 리스트에 추가

#print(prefix)
m=int(input().rstrip())
for x in range(m):
    i,j=map(int,input().split())
    if i==1:
        print(prefix[j-1])  
        #i가 1이면 처음부터 더하는것이기 떄문에 j-1의 값을 출력       
    else:
        print(prefix[j-1]-prefix[i-2])