Programming/JAVA

[Java] BufferedReader로 입력 받기

코딩뽀시래기 2022. 1. 21. 17:27
728x90

원래는 Java에서 입력을 받는 방법 중 Scanner를 이용하고 있었는데, 이 방법이 시간을 많이 잡아먹어서 TimeLimited 문제가 많이 발생했다. 그래서 이제는 시간을 단축시키기 위해 BufferedReader 방법으로 입력을 받고 있다.

 

단, 해당 방법은 줄 단위(enter 기준)로 입력을 받기 때문에 공백(space) 기준으로 입력을 받기 위해서는 토큰화를 해주어야 한다.

 

1) 정수형을 enter 기준으로 입력 받을 때

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(bf.readLine());
    }
}

 

2) 정수형을 공백 기준으로 입력 받을 때

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int[] nums = new int[5];
        StringTokenizer st = new StringTokenizer(bf.readLine());
        for(int i = 0; i < 5; i++)
            nums[i] = Integer.parseInt(st.nextToken());
    }
}

 

3) 문자열을 enter 기준으로 입력 받을 때

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Num1181 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] words = new String[5];
        for(int i = 0; i < 5; i++)
            words[i] = bf.readLine();
    }
}

 

이 정도만 알면 응용해서 대부분의 입력을 받는 것이 가능할 것으로 본다.

728x90