구간 합 구하기 4
https://www.acmicpc.net/problem/11659


작성 코드
import sys
n, m = map(int, sys.stdin.readline().split())
nums = list(map(int, sys.stdin.readline().split()))
for _ in range(m):
i, j = map(int, sys.stdin.readline().split())
print(sum(nums[i-1:j]))
- 인덱스 슬라이싱을 통해 부분 배열을 구한 후 sum
- 시간 초과
이상 코드
누적 합
import sys
n, m = map(int, sys.stdin.readline().split())
nums = list(map(int, sys.stdin.readline().split()))
sum_value = 0
sums = [0]
for num in nums:
sum_value += num
sums.append(sum_value)
for _ in range(m):
i, j = map(int, sys.stdin.readline().split())
print(sums[j]-sums[i-1])
- 각 인덱스 별 [:idx] 의 누적합 계산하여 활용
학습
- 누적합, 누적곱 등 누적 계산을 잘 활용하자
반응형
'Algorithm > BOJ' 카테고리의 다른 글
| [BOJ]1018 | 체스판 다시 칠하기 (0) | 2022.02.14 |
|---|---|
| [BOJ] 2839 | 설탕배달 (0) | 2022.02.11 |
| [BOJ] 18111 | 마인크래프트 (0) | 2022.02.08 |
| [BOJ] 17298 | 오큰수 (0) | 2022.02.04 |
| [BOJ] 12871 | 무한 문자열 (0) | 2022.01.27 |
댓글