문제 10951) A+B-4
문제) 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력)
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력) 각 테스트 케이스마다 A+B를 출력한다.
두 값을 넣으면 A+B가 출력이 되면 됩니다.
NO | 입력 | 출력 |
1 | 1 1 | 2 |
2 | 2 3 | 5 |
3 | 3 4 | 7 |
4 | 9 8 | 17 |
5 | 5 2 | 7 |
저는 이 문제를 풀지 못했습니다. 왜냐면 문제 자체를 제대로 이해하지 못했기 때문입니다.
그래서 입력 값을 배열로 받고 출력도 해보고 했지만 결국 실패만 했습니다.
그 이유는 제가 n 값을 지정해서 입출력 예시처럼 5개만 입력되도록 지정했기 떄문입니다.
이 문제에서 의도한 것은 A + B라는 값을 계속해서 입력 받고 출력하는 것입니다.
그치만 계속해서 while로 출력하는 것은 아닙니다. 일단 아래의 코드를 먼저 보겠습니다.
정답 코드)
package JAVA1225;
import java.util.Scanner;
public class Main_05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a, b;
do {
a = sc.nextInt();
b = sc.nextInt();
System.out.println(a + b);
}while(sc.hasNext());
}
}
여기서 while(true)로 하면 런타임 에러로 틀리게 됩니다.
그래서 hasnext()로 제한을 하면 정답이 됩니다.
◎ hasnext()란?
▷ 다음에 가져올 값을 boolean 타입으로 반환하는 것입니다.
▷ 값이 있으면 true, 없으면 false 입니다.
▷ 이 문제에서 의도한 것은 sc라는 값이 입력되다가 다음에 가져올 값이 없으면 false로 출력이 안되도록 하는 것입니다.
여기서 hasnext는 iterator의 method입니다.
◎ iterator()이란?
▷호출하면 iterator의 객체를 반환하고 자바의 컬렉션에 저장되어 있는 요소들을 읽어오는 방법의 인터페이스입니다.
▷이 인터페이스는 처음부터 끝까지 하나씩만 가져올 수 있습니다.
▷ iterator method
▶ hasNext() : 다음 가져올 값을 boolean 타입으로 반환합니다.
▶ next() : 다음 요소를 가져옵니다. Stirng은 String, 숫자는 숫자로 값을 가지고 오는 것입니다.
▶ remove() : next()로 읽어온 요소를 삭제합니다.
=> 호출 순서 : hasNext() → next() → remove()
제가 이해한 것으로는 iterator은 객체에 보관하고 있는 자료들을 순차적으로 접근하면서 처리할 수 있게 해줍니다.
사용시에는 hasNext()로 다음 값이 있는지 확인하고 next()를 통해 값을 읽어들여 원하는 작업을 처리할 수 있습니다.
위의 예제에는 hasNext()로 값을 확인하고 nextInt()를 통해 값을 읽어들이는 것입니다.
조금 내용이 어렵긴하지만 다음번에 유사한 문제가 있다면 한 번 더 다뤄보도록 하겠습니다!!
https://www.acmicpc.net/problem/10951
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

'문제풀기 > 백준 문제풀이' 카테고리의 다른 글
[백준 문제 4344번] 평균은 넘겠지 문제 (0) | 2023.01.06 |
---|---|
[백준 문제 2577번] 숫자의 개수 문제 (0) | 2023.01.02 |
[백준 문제 3052번] 나머지 문제 (0) | 2023.01.01 |
[백준 문제 1546번] 평균 문제 (0) | 2022.12.26 |
[백준 문제 2884번] 알람 시계 문제 (0) | 2022.12.25 |