본문 바로가기
JAVA

자바 입력, 출력 시 BufferedReader, BufferedWriter를 사용해보자!

by khds 2021. 11. 22.

 

백준 문제를 풀다가 시간 초과가 나는 경우가 종종 있는데, 그때 마다 매우 많은 입력, 출력에 시간을 많이 소모한 것이 원인인 적이 많다. 

아래와 같이 입력, 출력을 한다면 적은 시간이 걸릴 것이다.

ArrayList<Time> times = new ArrayList<>();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // BufferReader 선언
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // BufferWriter 선언

int tc = Integer.parseInt(br.readLine()); // br.readLine()를 통해 1 줄 입력을 받음.

for(int i = 0; i < tc; i++) {
    String[] input = br.readLine().split(" "); // split(" ")를 통해 1 줄 안에 입력 구분.

    int idx = Integer.parseInt(input[0]);
    int s = Integer.parseInt(input[1]);
    int e = Integer.parseInt(input[2]);

    times.add(new Time(idx, s, e));
}

for(int i =0; i < tc; i++){
	bw.write("test 1" + "\n"); // 출력할 내용을 저장
}

bw.flush();// flush()를 통해 저장된 내용을 한번에 모두 출력

 

 

참고

 

https://sjs2215.tistory.com/93

 

[JAVA] 알고리즘을 최적화 해보자

1. Scanner 입력 대신 BufferedReader를 사용하자 왜? 효율면에서 훨씬 굳 (입력값이 많을수록) BufferedReader는 데이터를 사용자가 요청할 때마다 '매번' 읽어오기 (X) 일정량 사이즈로 '한 번에' 읽어온 후

sjs2215.tistory.com