서론
이번에는 원래 2차원 배열 뒷단계를 풀어보려다가, 앞에 있는 모든 단계를 다 완료로 만들고 싶다는 강박증때문에,
앞에서 부터 다시 풀어보기로 했다.
1단계는 이미 이전에 다 풀어봤기 때문에 2,3 단계를 풀어보았으며, 기본적인 문제들이 많았다.
따라서 문제 리뷰는 하지 않고 중요했다고 생각되는 부분만 알아보도록 하자.
10951 : A + B - 4
문제
https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
이 문제는 단순하게 두 숫자를 더하는 문제이지만, 다른 문제들과 다르게, 입력값의 끝을 제시해주지 않는다.
해설
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = "";
while((input = br.readLine()) != null){
if(input.isEmpty()){
break;
}
StringTokenizer st = new StringTokenizer(input);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
bw.write(String.valueOf(a+b));
bw.write("\n");
}
bw.flush();
bw.close();
}
}
이 문제를 해결하기 위해서는 EOF에 대해서 알아보아야 한다.
EOF란 End Of File 으로 영어 그대로 파일의 끝을 의미하는 것으로, 더 이상 읽을 수 있는 것이 없다는 것을 의미한다.
BufferedReader를 통해 읽은 값이 null이 아닐 경우 반복문을 수행하며, 이후의 로직은 그냥 두 수를 더해주는 것이다.
if문을 추가한 이유는, 백준은 파일 형식으로 입력값을 제공한다는 것을 얼핏 본 것 같아 if문이 없어도 파일의 끝을 알 수 있지만, 우리가 직접 입력하여 테스트하는 경우에는 결과가 다르게 나온다.
따라서 이를 해결하기 위해서 input이 비어있을 경우를 다시 한번 확인해주도록 하였다.!
결론
기본적인 문법들을 다시 알아보니 재미있었고, EOF에 대해서 다시 알아볼 수 있었다!
'CodingTest > 백준' 카테고리의 다른 글
[백준] 기하: 직사각형과 삼각형 (0) | 2023.07.19 |
---|---|
[백준] 약수, 배수와 소수 (0) | 2023.07.13 |
[백준] 일반 수학 1 (0) | 2023.07.05 |
[백준] 1차원 배열, 문자열 (0) | 2023.06.30 |
[백준] 2차원 배열 (0) | 2023.06.28 |