💡문제 풀이/백준 - JAVA

A+B - 4 / 10951

뇌 리셋은 기본이지 2023. 11. 17. 15:05

정보

분류 : 반복문

 

문제

문제링크

 

풀이

  • 풀이 1 ( Scanner + println() ) → 228ms
import java.util.*;

public class Main {
  public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(sc.hasNextInt()) {
            int A = sc.nextInt();
            int B = sc.nextInt();

            System.out.println(A+B);
        };
        sc.close();
  }
}
  • 풀이 2 ( BufferedReader + BufferedWriter + StringTokenizer ) → 144ms
import java.io.*;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		// InputStream : 자바의 가장 기본이 되는 입력 스트림
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// OutputStreamWriter : 자바의 가장 기본이 되는 출력 스트림
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		StringTokenizer st;
		String str;
	
  		// 입력의 끝에 Enter를 한 번 더 입력하면 그 입력을 EoF로 판별하여 처리한다.
		while( (str = br.readLine()) != null) {
			st = new StringTokenizer(str, " ");
			
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			
			bw.write( ( A + B ) + "\n");
		}
		br.close();
		
		bw.flush();
		bw.close();
	}
}

 

풀이 후기

해당 문제는 EoF(End of File)의 개념이 적용되었다고 한다.

EoF(End of File)란?
입력에서 더 이상 읽을 수 있는 데이터가 없을 때 우리는 EoF 즉, 파일의 끝이라 한다. 읽을 수 있는 데이터가 없다는 뜻으로 입력을 하지 않았다는 뜻과 같으므로 null을 뜻한다.

Scanner를 이용한 풀이 1은 hasNextInt()를 이용하였다. hasNextInt()는 입력값이 정수일 경우 true를 반환한다. 만약 정수가 아닐 경우 바로 예외를 던지며 더 이상의 입력을 받지 않고 while문은 종료된다.

 

BufferedReader를 이용한 풀이 2는 StringTokenizer를 이용하였다. StringTokenizer는 문자열 분리하는 클래스이다. while문의 true 조건readLine()을 통해 입력을 하여 str에 저장된 데이터가 null이 아닐 경우이다. 만약 str에 저장된 데이터가 null이면 while문은 종료된다. 

 

나는 문제를 풀 때 이클립스로 푼다. 윈도우의 경우 Ctrl + Z를 이용하여 while문을 종료시켰다.

reference

https://st-lab.tistory.com/40

https://cha-coding.tistory.com/entry/%EB%B0%B1%EC%A4%80-10951%EB%B2%88-AB-4-%E2%80%93-JAVA-%EC%9E%90%EB%B0%94

'💡문제 풀이 > 백준 - JAVA' 카테고리의 다른 글

X보다 작은 수 / 10871  (1) 2023.11.20
개수 세기 / 10807  (0) 2023.11.20
A+B - 5 / 10952  (1) 2023.11.17
별 찍기 - 2 / 2439  (0) 2023.11.17
별 찍기 - 1 / 2438  (0) 2023.11.17