[JAVA]백준 1000번: A+B

정해주·2023년 3월 8일

JAVA

목록 보기
2/4

💡 문제

📝 코드

1. Scanner

2. BufferedReader


💻 풀이

1. Scanner 클래스를 사용하여 입력받기

1. Scanner 클래스를 import하기

import java.util.Scanner;

2. 객체 생성

Scan scan = new Scanner(System.in);

3. 입력 받기

  • scan.nextInt(): 정수를 입력받는다.
  • scan.nextLine(): 문자열을 입력받는다.

2. BufferedReader 클래스를 사용하여 입력받기

BufferedReader를 사용하는 이유

  1. 속도
    : 백준 프로그램에서 BufferedReader는 Scanner보다 약 7배 이상 빠른 것을 알 수 있습니다. 입력 데이터가 많아질 수록 성능 차이는 커집니다.

  • why? buffer의 크기 차이
    - Scanner는 1KB로 입력을 받을 때마다 전송합니다.
    - BufferedReader는 8KB로 buffer에 입력들을 buffer에 저장하였다가 한 번에 전송합니다.
    : 짧은 입력에서는 Scanner가 효율적일 수 있지만 입력이 길 경우 속도차이는 커집니다.
  1. Scanner는 입력을 읽는 과정에서 정규표현식, 입력값 분할, 파싱 과정 등을 거치기 때문에 속도가 느립니다.

BufferedReader 사용법

1. 클래스 import 하기

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

📌 예외처리를 해주는 이유?
readLine() 메서드는 입력값이 없을 때의 예외처리를 해야하기 때문이다.

2. 객체 생성

BufferedReader br = new bufferedReader(new InputStreamReader(System.in));

3. 입력값 받기

String str = br.readline();

📌 BufferdReader는 개행문자(Enter값)만 경계로 인식하고 입력받은 데이터가 String으로 고정된다.

4-1. StringTokenizer와 nextToken으로 한 문자씩 받기

StringTokenizer str = new StringTokenizer(br.readline(), " ");

4-2.String[] 배열로 한 문자씩 받기

String[] str = br.readline().split(" ");
profile
개발 공부 중입니다

0개의 댓글