[11441번] 합 구하기
Algorithm/백준 문제 풀이

[11441번] 합 구하기

반응형

백준 11441번: 합 구하기

 

11441번: 합 구하기

첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는 각 구간을 나타내는 i와 j가 주어진다. (1 ≤ i ≤ j ≤ N)

www.acmicpc.net

$N ( 1 \leq N \leq 10,000 ) $개의 숫자를 입력받고, 구간을 $ M ( 1 \leq M \leq 10,000 ) $만큼 입력하면 그 사이의 수를 더한 값들을 각각 출력해주는 문제입니다.

 

처음에 그냥 구간만큼 for문을 사용하여 반복하면 되지 않을까를 생각했지만, 그래서는 시간제한 1초를 넘을 것 같았습니다.

계산해보면 $ 10^5 \times 10^5 = 10^{10} $로 족히 10초는 걸릴 수 있는 가능성이 있기 때문입니다.

그래서 저는 제가 Counting Sort를 배웠을 때 알았던 누적 합을 사용하기로 했습니다. 이렇게 하면 시간복잡도가 $O(1)$로 떨어지기 때문입니다.

 

[소스 보기]

반응형