
알고리즘 분류 : 누적합
난이도 : 골드5
출처 : 백준 - 태상이의 훈련소 생활



조교들의 지시를 받은 후 Arr에 조교가 지시를 시작한 부분과 끝나는 부분에 k를 각각 +, -를 해준다.
이를 누적한 후에 처음 위치를 더한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] paradeGround = new int[N];
int[] sumArr = new int[N+1];
st = new StringTokenizer(br.readLine(), " ");
for(int i=0;i<N;i++)
paradeGround[i] = Integer.parseInt(st.nextToken());
for(int i=0;i<M;i++) {
st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
sumArr[a-1]+=k;
sumArr[b]-=k;
}
for(int i=0;i<N;i++) {
sumArr[i+1]+=sumArr[i];
sb.append(paradeGround[i]+sumArr[i]).append(" ");
}
System.out.println(sb);
}
}

누적합에 자주 나오는 유형이다. 인덱스 값을 햇갈리지 않으면 크게 어렵지 않을것이다.