[백준] 10871번 : X보다 작은 수 - JAVA(자바)

Life is ninanino·2022년 10월 6일
0

[백준] JAVA

목록 보기
12/37
post-thumbnail

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할때 " "공백도 같이 출력해줬다
정답 처리가 되었지만
나중에 정답에 불필요한 공백이 삽입되면 안되는 출력문에선 문제가 발생하지 않을까?
검색 능력이 부족한지 어떤식으로 해결할지 답이 안보인다..

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글