Yim-HaEun

[백준]Java BufferedWriter.flush() 로 빠르게 입출력하기 본문

Java/Programmers 코테 풀이

[백준]Java BufferedWriter.flush() 로 빠르게 입출력하기

Yim_Ha_Eun 2024. 9. 21. 03:38

Scanner 와 System.out.println(); 방식보다 빠르게 입출력하는 방식이 있습니다.

 

flush() 

버퍼에있는 데이터를 강제 출력

 

BufferedWriter bw = new BufferedWriter(New OutputStreamWriter(System.out)); // 선언
String str = "bufferedWriter";
bw.write(str); // ==sysout
bw.newLine(); // 줄바꾸기
bw.flush(); // 남아 있는 데이터를 버퍼에서 가져와 모두 출력
bw.close();

 

**

bufferedReader는 String이 기본값이기 때문에 Integer.parseInt()를 쓴다.

 

import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader bufferedReader = new BufferedReader (new InputStreamReader(System.in));//선언
		BufferedWriter bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out)); //선언
		
		int n = Integer.parseInt(bufferedReader.readLine()); //입력받기 
		for(int i=0;i<n;i++) {
			String[] input = bufferedReader.readLine().split(" "); //한줄 입력
			int a = Integer.parseInt(input[0]);
			int b = Integer.parseInt(input[1]);
			bufferedWriter.write(String.valueOf(a+b)); //출력
			bufferedWriter.newLine(); //개행
		}
		bufferedWriter.flush();//버퍼 전부 출력 (필수)
		bufferedWriter.close();//스트림 닫기 (필수)
	}	
}

 

Scanner는 내부적으로 정규표현식을 사용해 파싱하기때문에 성능이 약간 느려질수 있지만 사용하기 간편하다는 장점이있습니다.

BufferedReader는 단순히 텍스트를 빠르게 읽는데 집중하고, 여러줄의 데이터를 한꺼번에 처리함으로써 성능을 향상시킴

항상 문자열을 반환해서 Int는 파싱작업이 필요합니다 

예시)

BufferedReader b = new BufferedReader(new InputStreamReader(System.in));

int a = Integer.parseInt(b.readLine());