본문 바로가기
코딩테스트/백준

[백준/10871] X보다 작은 수 (런타임 에러 (NumberFormat) 주의) (Java)

by wo__ongii 2024. 12. 24.
728x90

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 X = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine()," ");

        StringBuilder sb = new StringBuilder();
        for(int i=0;i<N;i++){
            int num = Integer.parseInt(st.nextToken());
            if(num<X){
                sb.append(num).append(' ');
            }
        }
        System.out.println(sb);
    }
}

 

 

[틀린 코드]

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int X = Integer.parseInt(br.readLine());
String[] A = br.readLine().split(" ");

StringBuilder sb = new StringBuilder();
for(int i=0;i<N;i++){
    int num = Integer.parseInt(A[i]);
    if(num < X){
        sb.append(num).append(' ');
    }
}

 

- 입력 형식 문제 : 입력 형식이 올바르지 않을 수 있음. (N에 입력된 숫자보다 A 배열의 길이가 짧거나 길 경우, A 배열에 정수가 아닌 값이 포함되어 있을 경우, A[i]를 Integer.parseInt로 변환하려고 할 때, 해당 값이 정수로 변환할 수 없는 형식일 경우)

- 불필요한 공백 : br.readLine().split(" ")는 공백(" ")을 기준으로 나누는데, 입력 데이터에 추가 공백이 있으면 빈 문자열이 배열에 포함될 수 있음.

- 입력과 조건의 불일치 : N의 값이 입력된 배열 A의 길이와 일치하지 않는 경우

 

[고찰]

BufferedReader로 입력 받은 문자열 분리를 위해 StringTokenizer 사용해야함. StringTokenizer 사용법 제대로 숙지하기

728x90
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

[백준/10813] 공 바꾸기 (Java)  (0) 2024.12.24
[백준/10810] 공 넣기 (Java)  (0) 2024.12.24
[백준/2588]  (0) 2024.12.16
[백준/2178] 미로 탐색하기 (BFS)  (0) 2024.09.19
[백준/11724] 연결 요소의 개수(DFS)  (1) 2024.09.12