Jaeyoung Kim
나의 개발 공부 일지
Jaeyoung Kim
전체 방문자
오늘
어제
  • 분류 전체보기 (77)
    • WIL👨‍🏫 (16)
    • 🤖Algorithm (29)
    • 🖥CS (20)
      • 기술면접대비🔎 (10)
    • ✍️개발로그 (10)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기
  • 설정

공지사항

인기 글

태그

  • 트랜잭션
  • 백준
  • til
  • 프로그래머스
  • 백준2920
  • querydsl
  • transaction
  • HTTP
  • sql
  • WIL
  • 개발로그
  • SQLD
  • Java
  • 데이터자료구조
  • 자바
  • 회고록
  • API
  • rest
  • 항해99
  • N-gram parser

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Jaeyoung Kim

나의 개발 공부 일지

[백준] A+B - 4(feat.BufferedReader EOF)
카테고리 없음

[백준] A+B - 4(feat.BufferedReader EOF)

2022. 11. 21. 14:43
728x90

들어가며

1일 1 커밋을 위해 백준 문제 풀이를 이어나가다 기존의 학습했던 내용으로는 해결 불가능한 부분이 발생하여 문제 해결 후, 그 과정을 기록해보고자 한다.


A+B - 4

문제

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

 

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

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

 

출력

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

 

예제 입력 1

1 1
2 3
3 4
9 8
5 2

예제 출력 2

2
5
7
17
7

 

EOF(End of File)

이 문제 자체의 난이도만 보았을 때는 정말 쉬운 문제이지만 가장 중요한 점은 파일 종료 조건이 없이 예제 입력만 주어졌다는 것이다. 즉, 입력에서 더 이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문 및 프로그램을 종료시킬 수 있어야 하는 것이다.

이런 식의 데이터가 더 이상 존재하지 않을 때를 EOF(End of File), 즉, 파일의 끝이라고 한다. 이를 BufferedReader를 이용하여 어떻게 처리하는지 알아보고자 한다.

 

Solution.java

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

public class Main {
    /* A+B - 4 */
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        String str;
        while ((str = br.readLine()) != null) {
            st = new StringTokenizer(str);
            if (!st.hasMoreTokens()) break;
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            int sum = a + b;
            bw.write(sum + "\n");
        }
        bw.flush();
        bw.close();
    }
}

 

while문의 조건부에서 초기화시킨 문자열 str을 BufferedReader를 통해 입력받은 값이라 가정했을 때, 해당 값이 null일 경우 종료하게끔 설정해주었다. 이를 통해 간단하게 문제 해결도 가능했다. 수동으로 프로그램을 구동하여 테스트 해볼 경우에는 입력을 모두 마친 뒤, Enter를 두 번 연이어 눌러 null 값을 넣어주거나 윈도우의 경우 ctrl + Z 혹은 리눅스의 경우 ctrl + Z를 입력하면 예제와 같이 출력되는 것이 확인 가능하다.

 

백준의 티어 시스템을 알게되어 적용해보니 해당 문제는 가장 난이도가 낮은 브론즈 5에 해당하는 문제였다. 문제가 전혀 어렵지는 않지만 문제 풀이에 필요한 EOF 처리 방법에 대해 이제야 학습하고 있다는게 스스로 부끄러울 따름이다.

개발 공부를 본격적으로 시작하고자 마음먹은 지 5개월째인 지금도 기초적인 문제를 풀고 있지만 꾸준히 공부하고 기록하다 보면 분명 좋은 결과가 있을 것이라 생각한다.


Reference

st-lab - [백준] 10951번 : A+B -4 - JAVA[자바]

728x90
    Jaeyoung Kim
    Jaeyoung Kim
    보다 안정적인 코드 구현을 꿈꾸는 백엔드 개발자 지망생

    티스토리툴바