💡문제 풀이/백준 - JAVA

A+B - 7 / 11021

뇌 리셋은 기본이지 2023. 11. 16. 17:17

정보

분류 : 반복문

 

문제

문제링크

 

풀이

  • 풀이 1 ( Scanner ) → 268ms
import java.util.*;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();

		for(int i = 1 ; i <= a ; i++) {
			int b = sc.nextInt();
			int c = sc.nextInt();
            
			System.out.println("Case #"+(i)+": "+(b + c));
		}
	}
}
  • 풀이 2 ( BufferedReader + println() + String.split() ) → 164ms
import java.io.*;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		// InputStream : 자바의 가장 기본이 되는 입력 스트림
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
        
		int a = Integer.parseInt(br.readLine());

		for(int i = 1 ; i <= a ; i++) {
			String str = br.readLine();
			
			int b = Integer.parseInt(str.split(" ")[0]);
			
			int c = Integer.parseInt(str.split(" ")[1]);
			
			System.out.println("Case #"+(i)+": "+(b + c));
		}
        
		// 입력 종료
		br.close();
	}
}
  • 풀이 3 ( BufferedReader + BufferedWriter + StringTokenizer ) → 152ms
import java.io.*;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		// InputStream : 자바의 가장 기본이 되는 입력 스트림
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
		// OutputStreamWriter : 자바의 가장 기본이 되는 출력 스트림
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
		// Stream 이란 출발지와 도착지를 이어주는 다리다.
		
		// 입력 값을 String에서 int로 변환.
		int a = Integer.parseInt(br.readLine());
		
		// 문자열 분리 담당
		StringTokenizer str;

		for(int i = 1 ; i <= a ; i++) {
			str = new StringTokenizer(br.readLine(), " ");
			
			int b = Integer.parseInt(str.nextToken());
			int c = Integer.parseInt(str.nextToken());
			
			bw.write("Case #" + i + ": " + (b + c) + "\n");
		}
		
		// 입력 종료
		br.close();
		
		// 출력 비우고
		bw.flush();
		// 출력 종료
		bw.close();
	}
}

 

풀이 후기

기존 풀어뒀던 문제는 Scanner로 되어있어서 BufferedReader를 사용해서 풀어보았다.

성능 차이 장난 아니다🤔👏

 

참고 블로그를 보니까 StringTokenizer 클래스를 사용했길래 나도 사용해보았다.

나는 문자열 분리할 때 String.split()를 사용했었는데 문자열 분리해주는 클래스도 있다는걸 처음 알았다.

신기하다👏👏

 

BurreredReader : 입력이 모두 완료 되었으면 종료(close())
BufferedWriter    : 필수로 출력이 모두 완료되었으면 비우고(flush()) 종료(close())

reference

https://st-lab.tistory.com/33

'💡문제 풀이 > 백준 - JAVA' 카테고리의 다른 글

별 찍기 - 1 / 2438  (0) 2023.11.17
A+B - 8 / 11022  (0) 2023.11.16
빠른 A+B / 15552  (0) 2023.11.16
코딩은 체육과목 입니다 / 25314  (0) 2023.11.16
영수증 / 25304  (0) 2023.11.13