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
반응형
'Python3 > 백준 알고리즘' 카테고리의 다른 글
2022.03.10 [백준] (python 파이썬) 잃어버린 괄호 (0) | 2022.03.10 |
---|---|
2022.03.07 [백준] (python 파이썬) 2Xn 타일링 2 (0) | 2022.03.07 |
2022.03.06 [백준] (python 파이썬) Four Squares (0) | 2022.03.06 |
2022.03.06 [백준] (python 파이썬) 비밀번호 찾기 (0) | 2022.03.06 |
2022.03.06 [백준] (python 파이썬) DSLR (0) | 2022.03.06 |
댓글