Algorithm/[BOJ]
[Java] 백준 10810번 : 공 넣기
정보통신 고심이
2024. 3. 8. 11:56
https://www.acmicpc.net/problem/10810
접근법
1) 배열 N 길이 할당
2) 반복문 (M번)
3) 배열에 값을 할당하여 값을 갱신
고민 된 부분
1) i, j, k 연속 할당
2) 두번째 반복문 선언시 변수 a 고민
3) 두번째 반복문 조건을 a = i-1로 해야 배열이 0부터 시작하는 것에 맞음
오답 코드
더보기
import java.io.*;
import java.util.*;
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());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for(int l=0; l<M; l++) {
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
for(int a=i; i<=j; a++) {
arr[a]= k;
}
}
for(int i=0; i<arr.length; i++) {
bw.write(String.valueOf(arr[i]));
bw.write(" ");
}
br.close();
bw.flush(); // 버퍼에 있는 모든 데이터를 출력
bw.close(); // Buffer writer close
}
}
정답 코드
더보기
import java.io.*;
import java.util.*;
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());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for(int l=0; l<M; l++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
for(int a=i-1; a<j; a++) {
arr[a]= k;
}
}
for(int i=0; i<arr.length; i++) {
bw.write(String.valueOf(arr[i]));
bw.write(" ");
}
br.close();
bw.flush(); // 버퍼에 있는 모든 데이터를 출력
bw.close(); // Buffer writer close
}
}
String tokenizer를 다른 반복문에서 한번 더 사용하려면 한번 더 선언해야 한다.