[백준] 1000번 - Java

공대표·2021년 9월 15일
0

[백준] 

목록 보기
5/16

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번 - 빠른 입력

아무래도 입력부터는 일반과 빠른의 속도차이가 많이 나는거 같다.

0개의 댓글

관련 채용 정보