알고리즘 문제를 풀 때, 시간 초과로 인한 문제가 발생할 수 있다.
이때, Scanner 대신 StringBuilder를 사용하면 소요 시간을 단축할 수 있다.
-
Scanner
- java.util.Scanner 클래스
- 읽은 데이터 파싱 가능
- IOexception 던짐X
- 버퍼 사이즈
<사용 예시>
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.println(N);
}
}
-
StringBuilder
- java.io.BufferedReader 클래스
- 파싱 불가능 -> 모두 텍스트로 읽음 (string으로 값을 읽음), 별도의 처리 필요함
- buffer를 이용하여 scanner 비해 속도 빠름 ( 파싱 기능 없이 단순히 읽기 때문)
- IOexception 던짐O
<사용 예시>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(N);
}
}
<정리>
- Scanner : 키보드가 눌릴 때마다 데이터를 목적지에 이동
- StringBuffer : 버퍼에 값들을 모았다가 모인 데이터를 목적지로 이동
- Scanner가 사용하기는 더 편리하지만, 데이터 양이 많아질 경우 StringBuffer를 사용하는 것이 효율적으로 데이터를 전달할 수 있다.
★ StringTokenizer
- BufferedReader로 받은 data는 line 단위로 되어 있음
- 공백 단위로 나누고 싶다면 별도의 처리 필요 -> StringTokenizer 사용
- 인자로 BufferedReader로 읽은 문자열 가지고 nextToken()으로 쪼개기
- 별도의 타입이 있을 경우 추가 처리 필요 (ex: Integer.parseInt();)
<사용 예시>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String test = br.readLine();
StringTokenizer st = new StringTokenizer(test); //StringTokenizer 인자값에 입력 문자열 넣음
int first = Integer.parseInt(st.nextToken()); //첫번째 값은 int type
String second = st.nextToken(); //두번째 값은 string 일때
System.out.println(first);
System.out.println(second);
}
}
'JAVA' 카테고리의 다른 글
JAVA : Comparable & Comparator (+ 백준 11650) (0) | 2021.06.22 |
---|---|
JAVA : BufferedReader & BufferedWriter (0) | 2021.01.14 |
JAVA : String 또는 Char의 int 타입 변환 (0) | 2021.01.13 |
JAVA : Scanner로 문자 입력 (Char 타입) (0) | 2021.01.12 |
JAVA : System.out & StringBuilder (0) | 2021.01.08 |