본문 바로가기
Algorithm/BOJ

[BOJ] 11659 | 구간 합 구하기 4

by 밤초록 2022. 2. 9.
구간 합 구하기 4
https://www.acmicpc.net/problem/11659

 

 

 

 

작성 코드

 

import sys
n, m = map(int, sys.stdin.readline().split())
nums = list(map(int, sys.stdin.readline().split()))

for _ in range(m):
    i, j = map(int, sys.stdin.readline().split())
    print(sum(nums[i-1:j]))

 

  • 인덱스 슬라이싱을 통해 부분 배열을 구한 후 sum
  • 시간 초과

 

 

이상 코드

 

누적 합

 

import sys
n, m = map(int, sys.stdin.readline().split())
nums = list(map(int, sys.stdin.readline().split()))

sum_value = 0
sums = [0]

for num in nums:
    sum_value += num
    sums.append(sum_value)

for _ in range(m):
    i, j = map(int, sys.stdin.readline().split())
    print(sums[j]-sums[i-1])

 

  • 각 인덱스 별 [:idx] 의 누적합 계산하여 활용

 

 

학습

 

  • 누적합, 누적곱 등 누적 계산을 잘 활용하자
반응형

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ]1018 | 체스판 다시 칠하기  (0) 2022.02.14
[BOJ] 2839 | 설탕배달  (0) 2022.02.11
[BOJ] 18111 | 마인크래프트  (0) 2022.02.08
[BOJ] 17298 | 오큰수  (0) 2022.02.04
[BOJ] 12871 | 무한 문자열  (0) 2022.01.27

댓글