본문 바로가기

알고리즘

백준) 이건 꼭 풀어야 해! - BOJ

https://www.acmicpc.net/problem/17390

 

17390번: 이건 꼭 풀어야 해!

[2, 5, 1, 2, 3]을 비내림차순으로 정렬하면 [1, 2, 2, 3, 5]이다.

www.acmicpc.net

 

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]의 숫자를 확인할 수 있다.