본문 바로가기
Python3/백준 알고리즘

2022.03.07 [백준] (python 파이썬) 구간 합 구하기 4

by ian's coding 2022. 3. 7.
728x90
반응형

 

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

 

11659번: 구간 합 구하기 4

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

www.acmicpc.net

 


풀이

이 문제는 주어진 범위를 for문을 돌며 합을 구하면 시간초과가 발생한다. 

그래서 다른 배열에 각 인덱스 까지의 합을 저장한 후, 

i~j까지 합을 sums[i]-sums[j-1]처럼 누적합을 이용하여 구하면 시간초과를 피할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
 
input=sys.stdin.readline
n,m=map(int, input().split())
nums=list(map(int,input().split()))
 
sums=[0]
total=0
for i in range(len(nums)):
    total+=nums[i]
    sums.append(total)
for _ in range(m):
    i,j=map(int,input().split())
    print(sums[j]-sums[i-1])
 
cs

 

 

 

 

728x90
반응형

댓글