본문 바로가기
CODING/BAEKJOON

[BAEKJOON] 1000번 A+B

by snow_white 2022. 1. 19.

백준 1000번 문제의 입력 부분을 Scanner와 BufferedReader 두 가지 방법을 사용하여 코드 효율을 비교해보았다.

문제. 1000

사칙연산 문제는 언제나 반갑다.

입력 받은 두 정수의 합을 구하는 문제이다.

 

지금까지 문자를 입력 받을 때 일반적으로 Scanner를 사용해왔다.

하지만 효율을 중시하는 코딩테스트에서는 BufferedReader라는 것을 쓰더라.

 

(혹시 BufferedReader와 Scanner의 사용법, 차이를 모른다면 지난 글 참고하시면 좋을 것 같아요)

2022.01.19 - [JAVA] - [JAVA] Scanner와 BufferedReader

 

먼저 Scanner를 사용한 코드를 보자.

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
 
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		
		System.out.println(a+b);
 
		in.close();
	}
}

다음으로 BufferedReader를 사용했다.

1) split() 활용

split()으로 공백을 기준으로 문자열을 나누어 배열에 저장한다.

저장된 배열에서 첫 번째 요소(인덱스 0번)부터 int형으로 변환하여 변수에 저장한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
       		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    	String str = br.readLine(); 
		String[] ab = str.split(" ");
		int a = Integer.parseInt(ab[0]);
		int b = Integer.parseInt(ab[1]);
        
		System.out.println(a+b);
	}
}

2) StringTokenizer 활용

StringTokenizer 객체를 생성하여 공백(기본 구분자)을 기준으로 문자열을 나누어 저장한다.

nextToken() 다음으로 존재하는 토큰을 리턴한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
        	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		System.out.println(a+b);
	}
}
  메모리 시간 코드 길이
Scanner 17756KB 220ms 267B
StringTokenizer + split 14292KB 128ms 466B
StringTokenizer + nextToken 14216KB 136ms 471B

[출처]

https://www.acmicpc.net/problem/1000

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

'CODING > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 8958번 OX퀴즈  (0) 2022.01.24
[BAEKJOON] 1152번 단어의 개수  (0) 2022.01.24
[BAEKJOON] 15596번 정수 N개의 합  (0) 2022.01.24
[BAEKJOON] 1009번 분산 처리  (0) 2022.01.24
[BAEKJOON] 2753번 윤년  (0) 2022.01.24

댓글