Algorithm/백준 알고리즘_Python
[알고리즘][Python] 백준(BOJ) 11441 합 구하기_파이썬
알파이
2020. 10. 23. 11:25
11441 합 구하기 www.acmicpc.net/problem/11441
11441번: 합 구하기
첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는
www.acmicpc.net
문제 풀기 전 공부할 것 : 누적 합
풀이
<내용>
- 구간의 합을 구하는 문제로 누적합을 이용하면 쉽게 해결할 수 있다.
- 누적합 cum array를 구한다.
- cum에 nums[0]을 넣어둔다.
- for문으로 반복하면서 cum의 마지막 숫자(지금까지 누적합)와 현재 nums를 더하면 만들 수 있다.
- i, j 구간의 합을 출력한다.(index와 i, j는 차이가 1이 나기 때문에 조심해야 한다.)
<코드>
import sys
input = sys.stdin.readline
n = int(input())
nums = list(map(int, input().split()))
cum = [nums[0]]
for i in range(1, n):
cum.append(cum[-1]+nums[i])
m = int(input())
for _ in range(m):
i, j = map(int, input().split())
if i == 1:
print(cum[j-1])
else:
print(cum[j-1]-cum[i-2])
728x90
반응형