본문 바로가기
study/CodingTest

백준 11021 A+B 다른 방법으로 접근하기 - BufferedReader (Java)

by 고기만두(개발자) 2021. 11. 5. 21:44
728x90
반응형

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

각 테스트 케이스마다 A+B를 출력한다.

그런데 주의사항) Case #1: (A+B결과값) 꼴로 출력해야 한다


 

여기 와 똑같은 문제나 마찬가지지만 다른 방법으로 풀어보자

 

맨 첫줄 반복횟수 앞뒤로 'Case #' 과 '반복회차' 붙이는 건 전혀 어렵지 않고

이번에는 BufferedReader를 사용해서 다르게 접근했다.

실무에서도 DB i/o가 너무 많아지는 코드, 기본 프레임워크 사용하면 수행시간 너무 오래걸리는

무지막지 대용량 배치의 경우 BufferedReader를 사용해놓은 걸 본 적 있다.

 

StringTokenizer의 구분자를 공백으로 설정하고 공백이 보일때마다 끊어서 변수를 저장하는데

int형으로는 바로 저장이 안된다.

nextToken()으로 끊으면 string타입이라고 한다.

그래서 형변환을 미리 또 해줬다 아니겠어

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int a =Integer.parseInt(br.readLine());
        
        StringTokenizer st ;
        
        for (int i = 1; i <= a ; i++){
            st = new StringTokenizer(br.readLine(), " ");    //띄어쓰기 기준으로 구문을 끊을거야
            int x = Integer.parseInt(st.nextToken());    //nextToken으로 끊으면 string형태라 형변환
            int y = Integer.parseInt(st.nextToken());
            int sum = x + y;
            
            System.out.println("Case #"+ i + ": " + sum);
        }
        
    }
}

(컴파일에러는 throwsIOException 빼먹어서임;;)

 

실제로 스캐너 방식에 비해 압도적으로 빠른 것을 확인 완료

728x90
반응형

댓글