최대 1 분 소요

[백준 15552번] 빠른 A + B

이 문제 같은 경우는 일부로 BufferedReader 를 공부해보고 싶어서 쉬워보임에도 불구하고 선택한 문제다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package _2월_1주차;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class 백준_손수경_정답_15552 {
 
    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 n = Integer.parseInt(br.readLine());
        
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            bw.write((Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())) + "\n");
        }
        bw.close(); //이거 안쓰면 출력 안됨
    }
 
}
 
cs


BufferedReader

BufferedReader는 Scanner와 유사한 기능을 갖고 있다. 하지만 입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율이 높아진다. 즉 빠른 입력이 가능하다. 하지만 BufferedReader는 Enter만 경계로 인식하고 받은 데이터는 모두 String으로 처리되기 때문에 문자열 외의 다른 값의 입력을 받고 싶다면 따로 처리를 해주어야 된다.

BufferedWriter

BufferedWriter는 System.out.println()과 유사한 기능을 가지고 있다. BufferedWriter는 버퍼를 잡아놓았기 때문에 반드시 close()를 호출하여 버퍼를 닫아주어야 한다.
BufferedReader같은 경우는 입력을 readLing()을 통해서 받는다. 여기서 readLine()은 무조건 String으로 고정되므로 아까 BufferedReader는 무조건 입력 받는 값이 모두 String형으로 바뀐다고 한 것이다. 또한 예외처리를 꼭 해주어야 한다. 그러기 위해서는 throws IOException 이 꼭 필요하다. 이를 위한 import는 다음과 같다. (사실 ctrl + shift + o 를 누르면 알아서 처리된다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package _2월_1주차;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
 
public class 백준_손수경_정답_15552 {
 
    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());
        
        bw.write(n);
        bw.close(); //이거 안쓰면 출력 안됨
    }
 
}
 
cs


StringTokenizer

근데 readLine()같은 경우는 한 문장별로 인식을 하기 때문에 공백 단위로 입력받기 위해서는 StringTokenizer를 사용해야한다. StringTokenizer의 nextToken() 매서드를 사용하면 입력값을 공백을 기준으로 나눌 수 있다.

댓글남기기