티스토리 뷰

반응형

백준 문제 보기  (<- 글자 클릭 시 백준 사이트로 이동)

 

 

그리 어렵지 않은 문제이기 때문에

바로 풀이에 들어가겠다.

 

BufferedReader와 stringbuilder 를 이용해 바로 풀어보겠다.

 


첫 번재 풀이

먼저 코드는 다음과 같다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Q10951 {
    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);
            sb.append("\n");
        }
        System.out.println(sb);
    }
}

 

while 단계의 문제이기 때문에 while문을 사용했고,

BufferedReader로 값을 입력받은 다음,

StringTokenizer를 이용하여 A와 B를 분리해줬다.

 

백준 10952 문제와 유사하지만

EoF(End of File)의 개념이 적용되었다.

 

EoF란, 더 이상 읽을 수 있는 데이터가 없음을 의미한다.

위의 코드에서 보듯이

br.readLine()으로 입력을 읽되, null이 아닐 때만 

while문을 반복하고 입력값이 null일 경우 while문을 빠져나오게 하면 된다.

 


🤔 왜 null일까?

 

다시 말하지만,

EoF(End of File)의 뜻은 

 

더 이상 읽을 수 있는 데이터가 없음!!

을 나타낸다.

 

읽을 수 있는 데이터가 없다는 말은 입력을 하지 않았다는 말과 같으므로 null이다.

 

그래서

while문의 조건식이 br.readLine()!=null이 된다.


 

바로 전 게시물에서 말했던 대로 (<- 글자 클릭해서 이동)

짧은 반복 주기라도 System.out.println으로 반복 횟수만큼 출력하는 방식보단

StringBuilder를 이용해 반복문이 끝나면 한번 출력하는 방식이 시간 효율이 좋았다.

 

또한, Scanner 입력 방식의 경우 BufferedReader에 비해 오랜 시간이 걸리므로 

이용하지 않았다.

 

딱히 어려운 문제가 아니었으므로,

다른 방법은 생각하지 않고 넘어갔다.

 


실행 결과

결과는 다음과 같다.

 

 


이전 문제와 유사한 문제이기도 하고, 난이도가 높은 문제는 아니라

딱히 푸는데 어려움은 없었다!

 

다만 EoF의 개념이 필요했던 문제다.

EoF의 개념만 확실히 공부한다면 문제를 이해하는데에 큰 어려움을 없을 것이라 생각한다.

 

문제를 보다 이해가 안되거나 설명이 이상한 부분이 있으면 댓글을 활용해주길 바란다.

반응형