Problem Solving
[백준/Java] 15552번 - 빠른 A+B
Jintiago
2022. 3. 25. 00:35
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
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));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int i=0;i<T;i++){
st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
bw.write((A+B)+"\n");
}
bw.close();
}
}
BufferedReader와 BufferedWriter는 처음 써 봐서 좀 헷갈렸다. Scanner와 println보다 확실히 처리 속도가 빠르다. 그 이유는, 버퍼 메모리에 데이터를 한데 모아 한번에 입출력하기 때문이다.
성능은 확실하나, BufferedReader는 엔터만 경계로 인식하고, 읽은 데이터를 문자열로 리턴하기 때문에 추가적인 작업이 필요하여 조금 번거롭다.
가장 먼저, throws IOException 입력하여 예외처리를 한다. 예외처리가 무엇인지는 바로 공부해야겠다.
우리는 한 줄에 나란히 위치한 두 수의 합을 구해야 하기 때문에, 읽은 라인을 StringTokenizer의 nextToken() 메소드로 공백 단위로 구분하여 호출하면 된다.
이후 정수로 형변환한 다음 더한 값을 출력하면 된다.
이 때, 줄 단위로 출력하고자 한다면 반드시 이스케이프 시퀀스 \n를 넣어줘야 한다.
Scanner처럼 자동으로 줄바꿈을 시켜주지 않는다.
마지막으로 BufferWriter의 close()로 스트림을 닫는다.