https://www.acmicpc.net/problem/10952
코드
using System;
using System.Text;
using System.IO;
class Program {
static void Main()
{
//입력 첫째 줄 : 입력은 여러개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄로 이루어진다.
// 각 줄에 A와 B가 주어진다. 마지막 케이스는 0 두 개가 들어온다.
StringBuilder getNumber = new StringBuilder();
while (true)
{
getNumber.AppendLine(Console.ReadLine());
if (getNumber.ToString().Contains("0 0")) break;
}
//출력 첫째 줄 : 각 테스트 케이스마다 A+B를 출력한다.
StringReader readNumers = new StringReader(getNumber.ToString());
StringBuilder output = new StringBuilder();
bool isFirst = true;
while (true)
{
string[] getAB = readNumers.ReadLine().Split();
int a = int.Parse(getAB[0]);
int b = int.Parse(getAB[1]);
int sum = a + b;
if (sum == 0) break;
if (isFirst)
{
isFirst = false;
output.Append(sum.ToString());
continue;
}
output.Append("\n").Append(sum.ToString());
}
Console.WriteLine(output.ToString());
Console.ReadLine();
}
}
getNumber 변수에 테스트 케이스를 반복문을 통해 계속 추가한다. 그리고 반복될때마다 getNumber에 "0 0"(테스트케이스의 끝 값)을 계속 검사한다. "0 0"이 검출되면 break;로 반복문을 빠져나온다. 입력부분 완료.
출력부분은 readNumbers에 입력받은 getNumber를 넘겨준다. readNumber은 반복문에서 한줄씩 읽힌다. 읽은 한 줄은 getAB에 2개의 값으로 들어가고. 문자열 getAB는 a와 b변수에 정수형으로 파싱하여 넘겨준다. 그리고 그 둘의 합계를 구하고 output에 차곡차곡 값을 집어넣는다. 만약 합계가 0이되면 그즉시 반복문을 빠져나와서 0이 output에 포함되는걸 방지한다.
중간에 isFirst는 사실 없어도 백준에 제출하면 정답처리가 된다. 하지만 콘솔창에서 실행했을때 불필요한 공백라인이 나오는걸 방지하기위해 만들어서 넣어두었다.
콘솔실행화면
정상출력된다