본문 바로가기

알고리즘/백준

[백준 / 입출력] 10951 : A+B - 4 (Java)

728x90

<정답 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이 된다.

 

BufferedReader 사용
Scanner 사용

시간이 2배 정도 차이나는 것을 확인할 수 있다. 따라서 BufferedReader를 사용하는 것이 속도 측면에서 좋다.

반응형