https://www.acmicpc.net/problem/10871
아래는 오답 코드
package 백준;// @ author ninaaano
import java.io.*;
import java.util.StringTokenizer;
public class b_10871 {
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 max = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
for(int i=0; i<n; i++){
int count = Integer.parseInt(st.nextToken());
arr[i] = count;
System.out.println(arr[i]);
if(arr[i]<max){
bw.write(String.valueOf(arr));
}
}
br.close();
bw.flush();
bw.close();
}
}
일단 맨 처음에 두 수를 입력받을때
int n = Integer.parseInt(br.readLine()); // 연속입력불가
두 수를 받지 못했다. 수를 하나만 입력받는다
그래서 StringTokenizer로 각각의 수를 받았다.
그리고 첫번째 입력 줄 부터 오류가 발생한다.
10 5를 입력했을 때 다음 줄을 입력하지 못하고 바로 NoSuchElementException 에러가 발생한다
그 다음 입력은 어떻게 받아야 할까?
한줄에 입력했을 땐 배열에 잘 들어가는 듯 하다
그래서 아래
st = new StringTokenizer(br.readLine());
한 줄 더 추가하니까 두 줄 입력이 가능해졌다.
++ 정답
package 백준;// @ author ninaaano
import java.io.*;
import java.util.StringTokenizer;
public class b_10871 {
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 max = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
st = new StringTokenizer(br.readLine());
for(int i=0; i<n; i++){
int count = Integer.parseInt(st.nextToken());
arr[i] = count;
if(arr[i]<max){
bw.write(String.valueOf(arr[i])+" ");
}
}
br.close();
bw.flush();
bw.close();
}
}
BufferedWriter은 띄어쓰기 공백으로 출력되지 않아서 write할때 " "공백도 같이 출력해줬다
정답 처리가 되었지만
나중에 정답에 불필요한 공백이 삽입되면 안되는 출력문에선 문제가 발생하지 않을까?
검색 능력이 부족한지 어떤식으로 해결할지 답이 안보인다..