-
[백준/BOJ] 1392번 : 노래 악보 (JAVA / 자바)백준 2022. 2. 22. 15:20
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/1392
- 문제 -
난이도 브론즈 2 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
입력값 N(곡의 수)와 Q(질문의 개수)가 입력된다.
문제를 보면 시간은 0분부터있다. 그리고 질문은 입력된 분에 해당하는 곡을 출력하는 것이다.
0부터인 것을보니 배열을 사용하면 될것 같다. 0인덱스부터 곡을 저장하고, 입력된 질문의 값을 인덱스 값으로 넣고, 그 자리에 저장된 값을 출력한다.
StringBuilder에 출력할 값을 저장해 주고, 마지막에 출력해 준다.
코드로 보자.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int Q = Integer.parseInt(st.nextToken()); StringBuilder sb = new StringBuilder(); List<Integer> list = new ArrayList<Integer>(); //곡은 1번부터 N번까지 있기에 1부터 N까지 반복하는 반복문 for(int i = 1; i <= N; i++) { int time = Integer.parseInt(br.readLine()); //1번의 시간부터 순서대로 입력되기 때문에 시간만큼 반복하며 list에 순서대로 곡 번호를 저장한다. for(int j = 0; j < time; j++) { list.add(i); } } //입력된 질문에 해당하는 인덱스에 저장된 값을 sb에 저장 for(int i = 0; i < Q; i++) { int num = Integer.parseInt(br.readLine()); sb.append(list.get(num)).append("\n"); } System.out.println(sb); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 1526번 : 가장 큰 금민수 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1408번 : 24 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1003번 : 피보나치 함수 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1021번 : 회전하는 큐 (JAVA / 자바) (0) 2022.02.21 [백준/BOJ] 1002번 : 터렛 (JAVA / 자바) (0) 2022.02.21