알고리즘

[백준, 자바, 1392번] 노래 악보

hminor 2024. 1. 8. 11:41
반응형

풀이

  • 해당 문제를 처음 보았을 때 무슨 말이야 했는데
  • 단순히 질문하는 시간에 몇 번째 노래가 나오고 있는지 물어보는 문제로
  • 우선 노래 시간을 배열에 추가할 때 입력값 + 누적값 -1을 추가하여 셋팅한 다음
  • 2중 for문으로 입력된 질문 시간에 따라 
  • 질문 시간이 특정 배열의 시간보다 작거나 같다면 출력하는 식으로 해결

 

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

public class 노래악보 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st =  new StringTokenizer(br.readLine());
        
        Integer n = Integer.parseInt(st.nextToken());
        Integer q = Integer.parseInt(st.nextToken());
        
        ArrayList<Integer> n_li = new ArrayList<>(n);
        Integer x = 0;

        for (int i = 0; i < n; i++) {
            Integer z = Integer.parseInt(br.readLine());
            n_li.add(z+x-1);
            x += z;
        }

        for (int i = 0; i < q; i++) {
            Integer Q = Integer.parseInt(br.readLine());
            for (int j = 0; j < n; j++) {
                if (Q <= n_li.get(j)) {
                    System.out.println(j+1);
                    break;
                }
            }
        }
    }
}