- BufferedReader, BufferedWriter을 이용한 빠른 입출력
https://www.acmicpc.net/problem/15552
1. 문제 접근
- 하나의 입력을 받는다.
- 입력된 수만큼 반복해서 2개의 수를 입력받고 두 수의 합을 출력한다.
-> 기존에 사용하던 Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter 사용!
Scanner와 BufferedReader의 차이점!
- Scanner은 java.util 패키지 클래스로 간단한 입력을 받을 때 유용! 또한 Scanner은 공백과 개행 모두를 경계로 나누어 입력을 받는다.
- BufferedReader은 java.io 패키지 클래스로 입력 데이터를 바로 처리하지 않고 버퍼링을 하고 한번에 데이터를 전달하기 때문에 많은 양의 데이터를 효율적으로 입력받을 수 있다. 또한 개행만 경계로 인식한다. Scanner는 원하는 자료형으로 입력을 받을 수 있지만 BufferedReader은 String으로만 입력을 받을 수 있다.
BufferedWriter의 특징!
- BufferedWriter는 버퍼 스트림을 생성하여 출력되는 데이터를 버퍼링하여 한번에 출력하는 특징을 가진다. 고로 System.out.prinln과 비교 했을 때 데이터의 양이 많아질 수록 더 효율적으로 데이터를 출력할 수 있고 시간도 단축 된다. 개행이 포함되어 있지 않기 떄문에 "\n", 개행을 따로 추가해주어야 하고 flush()를 통해 버퍼에 남은 데이터를 출력해주는 일, 버퍼를 다 쓰고 종료해주는 close()를 실행주는 것이 좋다.
2. 코드
import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
for(int i=0;i<n;i++)
{
st = new StringTokenizer(br.readLine());
int n1 = Integer.parseInt(st.nextToken());
int n2 = Integer.parseInt(st.nextToken());
bw.write(n1+n2+"\n");
}
bw.flush();
bw.close();
}
}
'백준 > JAVA' 카테고리의 다른 글
[백준/JAVA] 단계별로 풀어보기(2단계) 코드 모음 (0) | 2023.01.17 |
---|---|
[백준/JAVA] 단계별로 풀어보기(1단계) 코드 모음 (0) | 2023.01.16 |
[백준/JAVA] 11021번 A+B-7 (0) | 2023.01.16 |
[백준/JAVA] 1008번 A/B (0) | 2023.01.16 |
[백준/JAVA] 2480번 주사위 세개 (0) | 2023.01.16 |