알고리즘
백준) 이건 꼭 풀어야 해! - BOJ
1일1공부실천하자
2024. 1. 7. 19:16
https://www.acmicpc.net/problem/17390
import sys
input = sys.stdin.readline
n, q = map(int, input().split())
arr = [0]+list(map(int, input().split()))
arr.sort()
dp = []
for i in arr:
if not dp:
dp.append(i)
else:
dp.append(dp[-1] + i)
# print(dp)
answer = []
for _ in range(q):
l, r = map(int, input().split())
right = dp[r]
left = dp[l-1]
# print(right, left)
# break
print(right - left)
# print(answer)
우선 dp라는 배열에 누적합을 계산해준다.
누적합에서 r번째의 숫자와 l-1 번째를 빼준다면 arr[L:R]의 숫자를 확인할 수 있다.