관리 메뉴

커리까지

백준 11441번 합 구하기 파이썬 본문

알고리즘/풀이

백준 11441번 합 구하기 파이썬

목표는 커리 2021. 1. 28. 20:04
728x90
SMALL

문제

N개의 수 A1, A2, ..., AN이 입력으로 주어진다. 총 M개의 구간 i, j가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는 각 구간을 나타내는 i와 j가 주어진다. (1 ≤ i ≤ j ≤ N)

출력

총 M개의 줄에 걸쳐 입력으로 주어진 구간의 합을 출력한다.

예제 입력 1

5
10 20 30 40 50
5
1 3
2 4
3 5
1 5
4 4

예제 출력 1

60
90
120
150
40

예제 입력 2

3
1 0 -1
6
1 1
2 2
3 3
1 2
2 3
1 3

예제 출력 2

1
0
-1
1
-1
0

제출 답안

import sys
input = sys.stdin.readline

n = int(input())
num_list= list(map(int,input().split()))
m = int(input())

sum_value = 0
prefix_sum = [0]
for i in num_list:
    sum_value += i
    prefix_sum.append(sum_value)

for _ in range(m):
    left, right = map(int, input().split())
    print(prefix_sum[right] - prefix_sum[left - 1])
  1. n과 주어지는 데이터, m을 받는다.
  2. 앞에부터 누적 값을 담을 리스트를 선언하고 append한다.
  3. 이 누적된 리스트에서 오른쪽 인덱스 값에서 왼쪽 인덱스-1값을 빼면 답이 출력된다.
728x90
LIST
Comments