[백준] 11659. 구간 합 구하기4
·
코딩테스트/백준
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N예제 입력 1  5 3 5 4 3 2 1 1 3 2 4 5 5예제 출력 1  12 9 1 풀이일반 list와, 구간 합을 구하기 위한 합 배열을 저장할 prefixList를 만들어주었다. prefix에 list의 첫 번째 값을..
[알고리즘] 구간합
·
알고리즘
구간 합이란?`구간 합(Prefix Sum)`은 배열에서 특정 구간의 합을 효율적으로 계산하기 위해 사용하는 알고리즘이다.구간 합의 핵심 이론구간 합 알고리즘을 사용하기 위해서는 먼저 `합 배열`을 구해야 한다. 배열 A가 있을 때 합 배열 S는 다음과 같이 정의한다.합 배열 S 정의S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] //A[0]부터 A[i]까지의 합  합 배열은 기존의 배열을 전처리한 배열이라 생각하면 된다. 합 배열을 미리 구해놓으면, 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 `O(N)`에서 `O(1)`로 감소한다. 합 배열은 어떻게 만들까?합 배열 S를 만드는 공식S[i] = S[i-1] + A[i] 이렇게 구현된 합 배열을 이용하면 구간..