[Java] BurfferedReader를 통한 입력

Chaedie·2022년 5월 25일
0

Java 코테 대비

목록 보기
4/6
post-custom-banner

💡 백준 단계별로 하루 1문제 이상 푸는 중, 쉬울것 같아서 SKIP 했던 "반복문"에서 "빠른 A+B"라는 문제를 만났다.

해당 문제는 빠른 입출력을 위해 "Scanner" 대신 "BufferedReader"를 사용해야 하는 문제다.

속도보다 편의성을 중시하여 Scanner만 사용했었는데, 어쩔 수 없이 BufferedReader를 배우게 되었다. ㅋㅋ


여기 저기 블로그를 기웃거려도 설명이 이해가 안되더라.
그래서 그냥 문제에서 제출된 코드를 통해 익혔다.

문제

 //* 인풋
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        int coinCnt = 0;
        int[] coins = new int[n];
        for (int i = 0; i < n; i++) {
            coins[i] = Integer.parseInt(br.readLine());
        }

해당 문제 JAVA 첫번째인 "znzndnjswo2" 님 입력부분 코드입니다.
감사합니다.


문제 2 : 빠른 A + B

[백준] 빠른 A+B

위 sout으로는 빠른 A + B에서 시간 초과가 뜬다. 그래서 출력도 "BufferedWriter"를 사용해보자.

public static void main(String[] args) throws IOException {
        //* 인풋
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());

        for (int i = 0; i < n; i++) {
            String[] strs = br.readLine().split(" ");
            int a = Integer.parseInt(strs[0]);
            int b = Integer.parseInt(strs[1]);

            bw.write(Integer.toString(a + b) + "\n");
        }
        //* 시스템
        //* 아웃풋
        bw.flush();
        br.close();
        bw.close();
    }

위 코드는,
1) br, bw 인스턴스 생성
2) br.readLine(); 하면 String으로 들어옴 -> int n 으로 넣기 위해 Integer.parseInt(br.readLine());으로 입력
3) 입력이 "a b" 의 형태로 들어오는데, br은 공백으로 나눠 줘야 하니까 String[] strs = br.readLine().split(" ");로 나눠서 받는다.
4) "a + b"를 출력하기 위해 a, b를 Integer.parseInt(strs[0]);으로 나누어 인트로 만든다.
5) bw.write(Integer.toString(a + b) + "\n");을 통해 버퍼에 "a+b\n" 라는 스트링을 넣는다.
6) for문 내부에서 버퍼에 다 쓴 뒤, 마지막 bw.flush();로 버퍼에 있던 모든 데이터를 한번에 출력한다.

익숙해지고, 숙달되려면 버퍼리더 방식으로 많이 풀어봐야겠다.

끝~!🚀🚀

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글