<정답 1: Scanner 사용>
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){
int A = sc.nextInt();
int B = sc.nextInt();
System.out.println(A+B);
}
}
}
hasNextInt()는 다음에 정수가 오는 경우 true를 반환, 아니라면 false를 반환.
+ hasNext()도 사용가능. boolean 함수로 다음에 가져올 값이 null이 아니면 true를 반환.
<정답 2: BufferedReader 사용>
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));
StringBuilder sb = new StringBuilder();
String str;
while((str = br.readLine()) != null){
StringTokenizer st = new StringTokenizer(str, " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append(A+B).append("\n");
}
System.out.print(sb);
}
}
1. BufferedReader
BufferedReader는 Scanner처럼 java에서 입력을 받고 속도가 더 빠르다.
BufferedReader 클래스의 메소드는 입출력에러가 발생할 경우 IOException을 던지도록 정의돼있다. 따라서 예외처리를 해주어야한다. (throws IOException)
객체 생성하는 방법은 다음과 같다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
2. StringBuilder
String은 변경 불가능한 문자열이다. StringBuilder는 변경 가능 문자열이다.(append)
예를 들어 'hell'과 'o'를 합치는 경우 String은 'hell'과 'o'는 기존 자리에 저장된 채 새로운 메모리에 'hello'가 저장된다. 이에 반해 StringBuilder는 동일 객체 내에서 문자열의 변경이 가능하기 때문에 'hell'에 'o'를 붙여서 기존 위치(메모리)에 'hello'를 저장할 수 있다. 따라서 문자열 연산이 많은 경우 StringBuilder를 사용하는 것이 좋다.
3.StringTokenizer
split처럼 문자열을 쪼개는 기능을 한다. 쪼개진 문자열은 token이 된다.
시간이 2배 정도 차이나는 것을 확인할 수 있다. 따라서 BufferedReader를 사용하는 것이 속도 측면에서 좋다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / 입출력] 10953 : A+B - 6 (Java) (0) | 2023.09.01 |
---|---|
[백준 / 입출력] 10952 : A+B - 5 (Java) (0) | 2023.09.01 |
[백준 / 입출력] 10950 : A+B -3 (Java) (0) | 2023.09.01 |
[백준 / 입출력] 2558 : A+B - 2 (Java) (0) | 2023.09.01 |
[백준 / 입출력] 1000 : A+B (Java) (0) | 2023.09.01 |