alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 11441 합 구하기_파이썬 본문

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
반응형
Comments