[백준/21318] 피아노 체조- JAVA

이지환·2025년 4월 11일

알고리즘(백준) 💻

목록 보기
51/80
post-thumbnail

📌 문제

알고리즘 분류 : 누적합
난이도 : 실버1
출처 : 백준 - 피아노 체조

🦧 문제 풀이 접근

악보의 난이도를 배열1에 입력받는다.
이전 악보보다 난이도가 낮다면 배열2에 전 인덱스+1을 한다.
x, y가 주어지면 배열2[y]-배열2[x]값을 출력한다.

💻 code

import java.util.*;
import java.io.*;

public class Main {
    static int cnt;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int arr[] = new int[N];
        int arrSum[] = new int[N];
        StringTokenizer st = new StringTokenizer(br.readLine());
        arr[0] = Integer.parseInt(st.nextToken());
        for(int i=1;i<N;i++) {
            arr[i] = Integer.parseInt(st.nextToken());
            arrSum[i] = arr[i-1]>arr[i]?arrSum[i-1]+1:arrSum[i-1];
        }
        int Q = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<Q;i++) {
            st = new StringTokenizer(br.readLine());
            sb.append(0-arrSum[Integer.parseInt(st.nextToken())-1]+arrSum[Integer.parseInt(st.nextToken())-1]).append("\n");
        }
        System.out.println(sb);
    }
}

🥇 결과

🎓 느낀점

배열 인덱스만 조심하면 어렵지 않게 해결할 수 있다.

profile
takeitEasy

0개의 댓글