❔문제
https://www.acmicpc.net/problem/10952
10952번: A+B - 5
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
💯 풀이
package io.solution20201026;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Problem10952 {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
boolean runFlag = true;
while (runFlag) {
String text = bufferedReader.readLine();
StringTokenizer tokenizer = new StringTokenizer(text, " ");
int value = 0;
while (tokenizer.hasMoreElements()) {
value += Integer.valueOf(tokenizer.nextToken());
}
if (value == 0) {
runFlag = false;
} else {
System.out.println(value);
}
}
}
}
이번 문제는 이전 문제와는 다르게 몇 번의 케이스로 이루어지는지 알 수 없고 입력 값이 0, 0인 경우 종료됩니다.
0, 0 값이 입력되기 전까지 반복되어야 하기 때문에 while문을 사용하고 while문을 제어하기 위한 flag값 변수를 선언해줍니다.
boolean runFlag = true;
while (runFlag) {
...
}
while문을 통해 반복할 코드는 아래와 같습니다.
readLine() 메서드를 통해 문자열을 입력받고, 공백을 기준으로 문자열을 나누어 가져올 수 있는 token값이 있다면 value 변수 값에 더해줍니다.
양수만 입력받기 때문에 덧셈의 결과인 value 변수 값이 0인 경우 입력받은 두 개의 숫자가 [0, 0]이라는 뜻이 됩니다.
때문에 value 값이 0인 경우 runFlag값을 'false'로 변경하여 더이상 while문이 실행되지 않도록 합니다.
반대로 value 값이 0이 아닌 경우는 덧셈의 결과 값을 Console에 출력하도록 합니다.
String text = bufferedReader.readLine();
StringTokenizer tokenizer = new StringTokenizer(text, " ");
int value = 0;
while (tokenizer.hasMoreElements()) {
value += Integer.valueOf(tokenizer.nextToken());
}
if (value == 0) {
runFlag = false;
} else {
System.out.println(value);
}
문제를 처음 풀 때 입력 받은 수를 체크하는 부분을 split() 메서드를 사용하여 배열로 담고 배열의 index 0, 1번의 값을 비교하는 방법으로 구현하려고 생각했으나 .. 좀 더 고민하여 StringTokenizer을 사용하여 구현하였습니다. 😅
int value = 0;
String[] numberArray = text.split(" ");
if(numberArray.length>=2) {
if(numberArray[0].equals(numberArray[1])) runFlag = false;
continue;
}
for(int i=0; i<numberArray.length; i++) {
value+=Integer.valueOf(numberArray[i]);
}
System.out.println(value);
'Algorithm > BAEKJOON' 카테고리의 다른 글
[10950번] A+B - 3 (0) | 2020.10.26 |
---|---|
[2558번] A+B - 2 (0) | 2020.10.26 |
[1000번] A+B (0) | 2020.10.26 |