🌴 문제
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1
1 1
2 3
3 4
9 8
5 2
예제 출력 1
2
5
7
17
7
🌴 문제 분석
- EOF 란?
이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다.
즉 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다.
이렇게 데이터가 더이상 존재하지 않을 때 우리는 EOF (End of File) 즉, 파일의 끝이라 한다.
이를 처리하는 방법은 입력의 종류에 따라 여러 방법이 있다. 우리는 그 중 Scanner 와 BufferedReader 두 개의 처리 방법을 알아보고자 한다.
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
public class day11 {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
while(scan.hasNextInt()) { // 참고로 hasNextInt() 의 경우 입력값이 정수일경우 true를 반환하며 정수가 아닐경우 바로 예외를 던지며 더이상의 입력을 받지 않고 hasNextInt()에서 false를 반환하면서 반복문이 종료된다.
int A = scan.nextInt();
int B = scan.nextInt();
System.out.println(A+B);
}
}
}
---
1 1
2
2 3
5
3 4
7
9 8
17
5 2
7
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
public class day11 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
String str;
while( (str = br.readLine()) != null) { // 위 코드에서 보다시피 readLine() 을 통해 입력을 하여 str 에 저장된 데이터가 null 일 경우 while 반복문을 종료시켜버리고 아닐경우 반복문을 계속 수행하도록 한다.
st = new StringTokenizer(str, " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
sb.append(a+b).append("\n");
}
System.out.print(sb);
}
}
'Algorithm' 카테고리의 다른 글
Algorithm - 공 넣기 (Java) (0) | 2023.03.08 |
---|---|
Algorithm - 최소값과 최대값 (Java) (0) | 2023.03.07 |
Algorithm - 빠른 A + B (Java) (0) | 2023.03.04 |
Algorithm - 주사위 세개(Java) (0) | 2023.02.28 |
Algorithm - 오븐 시계(Java) (0) | 2023.02.28 |