본문 바로가기

백준 알고리즘

백준 10951번 자바 JAVA 풀이

반응형


두 정수 a, b를 받아 더한 값을 출력하는 방법을 묻는 문제이다.

a+b -4 인 만큼, 더하는 법은 알게 되었는데 이전 예제들처럼 for문을 쓰기 위해서는 몇 번을 반복했는지를 나타내는 첫 줄이 필요하다. 몇 번 반복해야 하는지 알려주지 않을 때 어떻게 해결할래?라고 묻는 문제인 것이다.

 

반복문은 for문 말고 while문이 있다. while(조건){} 으로 적는 방식이다.

이때 조건에 무엇을 넣을지 생각해봐야 한다. 

 

while(true) 혹은  while(a<10 && b<10) 로 적게 되면 잘못 작동한다.

 while(a<10 && b<10) 를 넣었을 때, 10이 넘는 수를 넣으면 작동이 멈추는 게 아니라, 한번 출력이 실행되고 작동이 멈춘다.

그렇다면 이 상황에는 무엇을 적어야 할까?

 

hasNextInt() 라는 메서드를 사용해야 한다.

이 메소드는 while 실행문이 실행되지 않고 대기하고 있는 상태를 유지하게 하는 역할을 한다.

사용자가 입력한 값에 공백이 들어가면 sc 객체는 중지되었던 자바를 다시 재생시키고, 

값이 정수의 숫자이면 true, 문자라면 false를 출력한다.

true라면 while문의 본문이 실행되고, false라면 close가 실행된다.

 

이제 코드를 살펴보자.

 

import java.util.Scanner;

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();
    }
}

while(sc.hasNextInt()) 로 적으면 이 메서드를 실행하게 된다.

a와 b가 미리 입력되는 것이 아니라,  while문이 실행되고 있을 때 입력값을 기다리고 있는 while에게

int a = sc.nextInt();와 int b = sc.nextInt(); 를 사용하여 a와 b를 주는 것이다.

그러면 System.out.println(a+b); 를 실행시켜서 더한 값이 출력되는 것이다.

 

이렇게 한 사이클이 돌면 다시 while문은 기다리는 상태가 되고, 입력값이 들어오면 실행하고,

들어오지 않으면 sc.close();를 사용하여 나가는 것이다.

 

반복문을 잘 정리해 두자. 

for문도 중요하고, while문에 조건을 넣는 방법, while(true), if 혼합하는 방식까지 잘 알아두자.

 

그럼 20000

반응형

'백준 알고리즘' 카테고리의 다른 글

백준 15552번 빠른 A+B 자바  (0) 2023.05.09
백준 2349번 별찍기-2 자바  (0) 2023.05.08
백준 10171번 자바 JAVA 풀이  (0) 2023.04.16
백준 11382번 자바 JAVA 풀이  (0) 2023.04.16
백준 2588번 자바 JAVA 풀이  (0) 2023.04.16