300x250
https://www.acmicpc.net/problem/10810
문제
분석
i, j, k = I번 바구니부터 J번 바구니까지 K라는 번호의 공을 넣는다.
가장 처음 바구니에는 공이 들어 있지 않는다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int M = sc.nextInt();
for(int i = 0; i < M; i++) {
int I = sc.nextInt();
int J = sc.nextInt();
int K = sc.nextInt();
for(int j = I - 1; j < J; j++) {
arr[j] = K;
}
}
for(int k = 0; k < arr.length; k++) {
System.out.print(arr[k] + " ");
}
}
}
Scanner 로 풀어준 문제입니다.
배열의 Index는 0부터 시작하기 때문에 I - 1을 해주어야 합니다.
풀이 2
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine()); // StringTokenizer로 N과 M, " "(공백)으로 구분
int N = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
int M = Integer.parseInt(st.nextToken());
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine()); // StringTokenizer로 " "(공백)으로 구분
int I = Integer.parseInt(st.nextToken());
int J = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for(int j = I - 1; j < J; j++) {
arr[j] = K;
}
}
for(int k = 0; k < arr.length; k++) {
bw.write(arr[k] + " ");
}
br.close();
bw.flush();
bw.close();
}
}
BufferedReader 로 풀어준 문제입니다.
성능면에서 Scanner 보다 빠르기 때문에 연습해 보시는 것도 좋을 것 같습니다.
Scanner 를 왜 안 쓰고
BufferedReader, BufferedWrite 를 사용하는지 궁금하시면
참고해 주세요.
300x250
'Progamming > BAEK JOON > 백준의 알고리즘' 카테고리의 다른 글
[백준] 10813번 : 공 바꾸기 - JAVA 문제 (0) | 2023.03.09 |
---|---|
[백준] 2562번 : 최댓값 - JAVA (0) | 2023.03.07 |
[백준] 10818번 : 최소, 최대 - JAVA (0) | 2023.03.07 |
[백준] 10871번 : X보다 작은 수 - JAVA 배열 (0) | 2023.03.07 |
[백준] 10807번 : 개수 세기 - JAVA 배열 (0) | 2023.03.06 |