본문 바로가기

Algorithm/BAEKJOON

[10952번] A+B - 5

문제

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