알고리즘/문제풀이

[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. 현재 수 + 앞에 존재하는 수들의 합을 구한다.
  2. 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. 결론

  • 기본적인 구간합 문제이다.
반응형