sm 기술 블로그

141. 11659(구간 합 구하기4) - 파이썬 본문

문제/백준_파이썬

141. 11659(구간 합 구하기4) - 파이썬

sm_hope 2022. 7. 11. 21:45
import sys
input = sys.stdin.readline
result = ""

N,M = map(int,input().split())

num = list(map(int,input().split()))

sum = 0
sum_arr = [0]
for i in num :
    sum += i
    sum_arr.append(sum)

for _ in range(M):
    sum = 0
    i,j =  map(int,input().split())
    result += str(sum_arr[j] - sum_arr[i-1]) + "\n"
    
print(result)

문제요약

구간의 부분합을 구하자

설명

정말 간단하게 생각하면 시간초과로 틀린다. (내가 그랬다 ㅎㅎ)

 

생각을 다르게하여 처음부터 누적합을 구하고 끝값에서 시작값-1 빼주는 방식으로 생각해보자.

다음과 같이 위는 입력값 밑은 누적합이다.

 

예를 들어 2와 4가 들어왔다고 하자.

2와 4의 구간의 누적합 9이다.

그럼 index 4번과 index 1번을 빼주면 되지 않을까?

맞다.

그게 정답이다.

'문제 > 백준_파이썬' 카테고리의 다른 글

143. 16139(인간-컴퓨터 상호작용) - 파이썬  (0) 2022.07.13
142. 2559(수열)  (0) 2022.07.12
140. 12865(평범한 배낭)  (0) 2022.07.11
139. 9251(LCS)  (0) 2022.07.10
138. 2565(전깃줄)  (0) 2022.07.10
Comments