알고리즘/문제풀이
[Python] 백준 11659 구간 합 구하기 4
정찡이
2021. 9. 4. 15:26
728x90
1. 문제 링크
https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
2. 문제 요약
i번째 수부터 j번째 수까지 합을 구한다. = 구간합

3. 아이디어 정리
- 현재 수 + 앞에 존재하는 수들의 합을 구한다.
- 1에서 구한 값 j에서 i - 1을 빼면 구간에 대한 합을 구할 수 있다.
4. 문제 풀이
4-1. 내 풀이
import sys
# 수의 개수, 합을 구해야하는 횟수
n, m = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
prefix = [0]
for i, a in enumerate(arr):
prefix.append(prefix[i] + a)
# 합을 구해야하는 구간 i, j
for _ in range(m):
i, j = map(int, sys.stdin.readline().split())
print(prefix[j] - prefix[i - 1])
5. 결론
- 기본적인 구간합 문제이다.
반응형