[백준/19951] 태상이의 훈련소 생활 - JAVA

이지환·2023년 12월 21일

알고리즘(백준) 💻

목록 보기
23/80
post-thumbnail

📌 문제

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

🦧 문제 풀이 접근

조교들의 지시를 받은 후 Arr에 조교가 지시를 시작한 부분과 끝나는 부분에 k를 각각 +, -를 해준다.
이를 누적한 후에 처음 위치를 더한다.

💻 code

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);
    }
}

🥇 결과

🎓 느낀점

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

profile
takeitEasy

0개의 댓글