2021.09.15 작성
드디어 입력을 받고 출력하는 문제다.
일반 입출력과 빠른 입출력으로 풀 생각이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
/* 일반 입출력 */
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a+b);
}
}
기본적으로 정수형 a, b 변수에 입력받아 두 수를 더한 값을 출력
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
/* 빠른 입출력 */
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int sum = a + b;
bw.write(String.valueOf(sum));
bw.flush();
bw.close();
}
}
BufferedReader는 빠른 입력, BufferedWriter는 빠른 출력을 위해 선언.
BufferedReader는 BR.readLine()으로 입력을 받는데, 무조건 문자열로 입력을 받기 때문에 정수형으로 바꿔줘야 한다.
또 여기서 문제의 입력 조건을 보면 "첫째 줄에 A와 B가 주어진다." 라고 나와있다. 다만 BufferedReader는 Scanner와 달리 한 줄에 여러 개의 입력을 받을 수 없는데 따라서 문자를 나누기 위해서 StringTokenizer 클래스를 사용해서 구분한다.
StringTokenizer st = new StringTokenizer(bf.readLine());
이 구문에서 만약 bf.readLine()에 "1 2" 를 입력하면 StringTokenIzer로 선언된 st에는 문자열 "1 2" 가 할당 된다.
그 다음 코드 두 줄을 보면
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
Integer.parseInt는 아까 readLine()은 무조건 문자열이고 st 또한 문자열이니 정수형으로 형변환을 위해 사용해야 하며, st.nextToken()은 공백을 기준으로 나누는 역할을 하는데 따라서 a는 int형 1 b는 int형 2가 대입된다.
마지막으로 하나 보면
bw.write(String.valueOf(sum));
BufferedWriter는 문자열만 출력이 가능해서 sum을 문자열로 형변환 시켜주고 출력해야 한다.
제출 번호 33336529번 - 일반 입력
제출 번호 33336562번 - 빠른 입력
아무래도 입력부터는 일반과 빠른의 속도차이가 많이 나는거 같다.