본문 바로가기
Baekjoon

[Java/Algorithm] BufferedWriter vs. StringBuilder 속도차이!

by dev_haha 2023. 11. 10.

위에서 부터 순서대로

  1. BufferedWriter + StringTokenizer + StringBuilder + while
  2. BufferedWriter + StringTokenizer + StringBuilder + for
  3. BufferedWriter + StringTokenizer + while
  4. BufferedWriter + StringTokenizer + for  

 

1. BufferedWriter + StringTokenizer + StringBuilder + while

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));
		StringBuilder sb = new StringBuilder();
		int T = Integer.parseInt(br.readLine());	// 테스트 케이스
		
		StringTokenizer st;
		int i=1;
		
		while(T>0)
		{
			st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			sb.append("Case #").append(i).append(": ").append(a+b).append("\n");
			T--;
			i++;
		}
		
		bw.write(sb.toString());
		
		br.close();
		bw.flush();
		bw.close();
	}
	
}

 

2. BufferedWriter + StringTokenizer + StringBuilder + for

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));
		StringBuilder sb = new StringBuilder();
		int T = Integer.parseInt(br.readLine());	// 테스트 케이스
		
		StringTokenizer st;
		
		for(int i=1; i<=T; i++)
		{
			st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			sb.append("Case #").append(i).append(": ").append(a+b).append("\n");
		}
		
		bw.write(sb.toString());
		
		br.close();
		bw.flush();
		bw.close();
	}
	
}

 

3. BufferedWriter + StringTokenizer + while

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 T = Integer.parseInt(br.readLine());	// 테스트 케이스
		
		StringTokenizer st;
		int i=1;
		
		while(T>0)
		{
			st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			bw.write("Case #" + i + ": " + (a+b) + "\n");
			i++;
			T--;
		}
		
		br.close();
		bw.flush();
		bw.close();
	}
	
}

 

4.BufferedWriter + StringTokenizer + for  

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 T = Integer.parseInt(br.readLine());	// 테스트 케이스
		
		StringTokenizer st;
		
		for (int i = 1; i <= T; i++)
		{
			st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			bw.write("Case #" + i + ": " + (a+b) + "\n");
		}
		
		br.close();
		bw.flush();
		bw.close();
	}
	
}

 

결론

  • Scanner 보다 BufferedReader를 사용한 입력
  • System.out.print 보다 BufferedWriter와 StringBuilder를 사용한 출력

을 통해서 시간 단축!