[알고리즘] 백준10951 (반복문)

백준 10951 문제이다.

https://www.acmicpc.net/problem/10951

위와 같이 숫자를 입력받아, 계산을 하는 문제이다.
딱 보았을때 쉽다고 느꼈다. 코드를 작성하려고 했는데 2가지 문제에 걸렸다.

1. 몇 개의 케이스를 입력해야하는가?
2. 언제 프로그램이 종료 되는가?


만약 더해야하는 것의 갯수가 정해져 있다면 for문을 이용하면 될 텐데,
위의 문제는 케이스가 정해져 있지 않았다.
그렇다면 while문을 이용해야 하는데, while()의 안의 조건문에 어떤 조건을 넣어야 되는 것일까.
어떻게 구현을 할 지 몰라 검색을 해보았다.

https://st-lab.tistory.com/40
위 블로그의 글을 바탕으로 예외처리 방법에 대해 알아보았다.

이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다.
즉 입력에서 더 이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다.
이렇게 데이터가 더 이상 존재하지 않을 때 우리는 EOF(End of File) 즉, 파일의 끝이라 한다.

Scanner를 통해 코드를 작성할 경우 EOF처리 방법은
1. try-catch문으로 예외 발생시 반복문을 종료시켜주도록 한다.
2. Scanner 의 메소드인 hasNext(), hasNextInt()를 통해 처리한다.


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        while(scan.hasNextInt()){
            int a = scan.nextInt();
            int b = scan.nextInt();
            System.out.println(a+b);
        }
        scan.close();
    }
}

좋은 웹페이지 즐겨찾기