[백준 / Java] 15552번 : 빠른 A+B

개발자가 되고 싶어요 ㅣ 2023. 1. 31. 05:22

https://www.acmicpc.net/problem/15552

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.*;
 
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());
 
        for (int i = 0; i < n; i++) {
            String s = br.readLine();
            int a = Integer.parseInt(s.split(" ")[0]);
            int b = Integer.parseInt(s.split(" ")[1]);
            bw.write(a + b + "\n");
        }
        bw.flush();
    }
}
cs

 

 

Scanner 대신 BufferedReader, System.out.println 대신 BufferedWriter를 사용하여 입출력의 시간을 줄이는 문제이다.

위 반복문에서 매 반복마다 Scanner를 사용하여 입력을 받고, System.out.println을 사용하여 출력을 한다면 제한 시간을 초과할 것이다. 그렇기 때문에 Buffer 메소드를 이용해야 하는데 이 Buffer 메소드 역할은 매 반복에서 입력받은 값을 저장하고 있다가 한번에 처리할 수 있게 도와준다. 예를 들어 쇼핑할때 구매할 상품을 하나씩 계산대에 갖다 놓는 것 보다 카트에 넣어 한번에 계산대에 갖고 가는 것이 빠르다. 여기서 카트의 역할을 하는 것이 Buffer 메소드 이다.