개발 일기

[백준 - JAVA] 10950번, 15552번 (Scanner vs BufferedReader) 본문

알고리즘

[백준 - JAVA] 10950번, 15552번 (Scanner vs BufferedReader)

윤지 2021. 1. 30. 23:31

두 문제 모두 for문을 사용하여 입력받은 n번만큼 A+B를 실행하지만 구현방식은 다르다.

Scanner 방식처럼 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간 초과가 날 수 있다.

 

10950

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int number,a,b;
        number = sc.nextInt();
        
        for(int i=0;i<number;i++){   
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(a+b);
        }
        
    }
}

 

15552

import java.io.*;
import java.util.*;

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

BufferedReader는 string으로 읽어오니 int로 형변환이 필요하다.

버퍼에 모두 저장한 다음에 flush 하면 버퍼에 저장된 내용들이 한번에 써지기때문에 성능면으로 좋다.

Comments