본문 바로가기
Coding/Java - BaekJoon

[백준][Java] 10951번 A + B - 4 문제풀이

by 이브(Eve) 2025. 1. 24.

10951번 바로가기 : https://www.acmicpc.net/problem/10951

# 10951 : A + B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.


입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.


풀이 코드

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        int a, b;
        Scanner sc = new Scanner (System.in);
        while(sc.hasNextInt())
        {
            a = sc.nextInt();
            b = sc.nextInt();

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

 

- 내가 문제를 풀면서 생각했던 궁금증 정리해보기 :

hasNextInt()가 무슨 역할인지, \n가 들어가는데 왜 while문의 조건이 false가 되지 않는지

 

1. while(sc.hasNextInt())

while문이 실행될 때 조건문을 검사하면서 hasNextInt() 메서드를 실행시킨다.

 

< hasNextInt() 메서드 >

  • 입력 스트림이 비어 있는 경우 사용자가 데이터를 입력할 때까지 대기한다.
    (이 메서드도 nextInt 메서드와 마찬가지로 입력을 받으려고 한다. 따라서 이전에 입력을 미리 받아두지 않아도 hasNextInt는 정상적으로 실행된다.)
  • 입력을 대기하다가 데이터가 들어오면 int형이 맞는지 확인한다. (아닐 경우 false -> 반복 종료)
    이때, nextInt()처럼 데이터를 꺼내오지 않고 단순히 int형이 맞는지 확인만 한다.

따라서 입력할 때 1 2.. 와 같은 정수가 아닌 a b 등의 문자를 입력하면 hasNextInt()는 false를 반환한다. while문도 종료된다.

만약 1 2를 입력했다면 이는 순서대로 a, b에 들어간다. (nextInt 메서드로 인해 입력 스트림에서 꺼내져 변수에 저장된다.)

hasNextInt()는 입력 값을 꺼내오지 않기 때문에 입력 값이 a, b에 들어갈 수 있는 것이다 !!

 

또한 nextInt()와 마찬가지로 hasNextInt()도 공백을 무시한다.

예를 들어 프로그램을 실행시키고 1 2를 입력했다고 하자.

입력 스트림에는 1 2\n이 저장되어 있을 것이다.

하지만 hasNextInt()는 공백(\n포함)을 무시하므로, 1과 2는 정수이기 때문에 while문 조건이 참이 되어 반복이 계속 돌아갈 수 있다.