포스트

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

Java의 빠른 입출력을 위해 BufferedReader, StringTokenizer, BufferedWriter를 사용하는 풀이를 정리했습니다.

For the English version of this post, see here.
[Java] 백준 15552번 - 빠른 A+B

BaekJoone 15552

풀이

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
import java.io.*;
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());
        
        for(int i=0; i<n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            
            bw.write((a+b) + "\n");
            
        }
        
        bw.flush();
        bw.close();
        
    }
}

Java에서 많은 수의 입력과 출력이 있을 때

  • Java에서는 기존에 사용하던 ScannerSystem.out.print보다
  • BufferedReader + StringTokenizer + BufferedWriter를 사용하는 게 나음

    BufferedReader (입력)

  • 빠르게 한 줄 읽기
  • 사용: import java.io.*;
  • 기본: BufferedReder br = new BufferedReader(new InputStreamReader(System.in));
  • 한 줄 입력: String s = br.readLine(); -> 문자열
  • 숫자로 변환: int n = Integer.parseInt(br.readLine());

    StringTokenizer (쪼개기)

  • split() 보다 빠름, 공백 기준 분리기
  • 사용: import java.util.StringTokenizer;
  • 기본: StringTokenizer st = new StringTokenizer(br.readLine());
  • 쪼개기: int a = Integer.parseInt(st.nextToken());

    BufferedWriter (출력)

  • 빠르게 출력
  • 사용: import java.io.*;
  • 기본: BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  • 출력: bw.write("hello\n"); -> write() 안에는 문자열만 가능
  • 마무리(필수): bw.flush(); bw.close(); -> 마지막 한번만 사용
    위 코드에서 write() 안에 문자열이 아닌 a+b가 들어갈 수 있는 이유
  • Java에서 "문자열" + 숫자문자열로 처리되기 때문에 "\n"을 통해 문자열로 변환되므로 사용 가능

import java.io.*

  • 입출력 관련 클래스 한 번에 가져오기 ex) BufferedReader, BufferedWriter, InputStreamReader, OutputStreamWriter