개발일지

[백준 JAVA] 10952번: A + B - 5 / 10951번: A + B - 4 본문

Java/알고리즘 공부

[백준 JAVA] 10952번: A + B - 5 / 10951번: A + B - 4

O'mil 2023. 1. 30. 13:30
728x90

#10952번: A + B - 5

문제


풀이
import java.util.Scanner;

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

        Scanner in = new Scanner(System.in);

        while(true) {
            
            int a = in.nextInt();
            int b = in.nextInt();

            if ( a == 0 && b == 0) {
                
                in.close();
                return;
            }
            System.out.println(a + b);
        }
    }
}

- while문을 실행시켜 a, b를 입력 받고

- 조건문을 이용해 ' a = 0, b = 0' 일 경우에는 프로그램을 종료하고, 아닐 경우에는 a + b값을 출력한다.

 

 

 if ( a == 0 && b == 0) {
                
                in.close();
                break;
            }

- return; 대신 break;을 사용해도 된다.

 


#10951번: A + B - 4

문제

풀이

- 이 문제는 파일 종료의 조건 없이 입력만 주어졌다.

 

과정

더보기
import java.util.Scanner;

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

        Scanner in = new Scanner(System.in);

        while(true) {
            int a = in.nextInt();
            int b = in.nextInt();

            System.out.println(a + b);
        }
    }
}

- 위와 같은 코드를 작성하였는데 컴파일 에러가 났다.

- 프로그램이 끝이 나지 않고 계속 돌아가기 때문에 에러가 난 것 같다.

 

EOF

더보기

EOF (End of File)

- 즉, 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다.

 

- EOF를 처리하는데는 여러 방법이 있는데 그 중 Scanner에서 사용하는 방법을 알아보고자 한다.

 

 

 

Scanner

- Scanner는 더 이상 읽어들일 정보가 없으면 예외(NoSuchElementException)를 던진다.

 

1. try-catch문을 이용해 예외 발생시 반복문을 종료시켜준다.

2. Scanner의 메소드인 hasNext()를 이용한다.

 

저는 hasNext()를 이용했습니다.

 

 

 

※ 주의

 우리가 입력을 받는 System.in (키보드로 입력받는 경우 Scanner)은 Enter, Space도 데이터로 인식하고 정보로 받아들인다.

 

따라서 조건문을 걸어 " "(공백) 이나 '\n' (엔터)의 경우는 예외를 발생시켜 종료시키도록 해야 한다. (백준 문제는 해당되지 않음)

 

그러나 IDE나 터미널에서 우리가 입력을 할 경우 공백이나 엔터를 치더라도 이 또한 데이터가 스트림에 넣어지기 때문에 예외로 판단되지 않는다. 결국

반복문을 종료시키려면 hasNextInt()에서 EOF를 입력(ctrl + z)를 해주거나 정수가 아닌 문자열을 입력하는 등 다른 타입의 입력을 주어 InputMismatchException을 던져주어야 한다.

참고) https://st-lab.tistory.com/40

 

 

import java.util.Scanner;

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

        Scanner in = new Scanner(System.in);

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

- 위 코드와 같이 hasNextInt()를 사용해 입력값이 있을 때 while문이 실행되도록 해줘야 한다.

 

 

 

 


참고)

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

 

 

728x90
Comments