두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
입력의 마지막에는 0 두 개가 들어온다.
각 테스트 케이스마다 A+B를 출력한다.
1 1
2 3
3 4
9 8
5 2
0 0
2
5
7
17
7
이 문제를 풀 때는 2가지 중요한 포인트가 있다. 첫번째는 반복문을 몇 번 돌릴껀지, 두번째는 입력이 0 0
일 경우 반복문을 어떻게 끝낼건지가 관건이다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
for(let i=0; i<input.length-1; i++){
let a = parseInt(input[i].split(' ')[0]);
let b = parseInt(input[i].split(' ')[1]);
let answer = a+b
if(answer === 0) break;
else console.log(answer)
}
지금까지 알고리즘 문제를 풀면서 input에 어떤 값이 들어가는지 제대로 확인해보지 않았다. console.log
를 통해 input이 어떻게 생겼는지 보자. 입력값은 예제의 입력값을 넣어줬다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
console.log(input)
// [
'1 1', '2 3',
'3 4', '9 8',
'5 2', '0 0',
''
// ]
console.log(input.length)
// 7
정확한 이유는 모르겠지 input의 맨 마지막 요소에 ''
값이 포함되어 있다. 그래서 i < input.length-1
만큼 반복문을 실행시켰다.
break를 사용하면 반복문에서 탈출할 수 있다. i=4
일 때까지만 반복문이 실행되고 i=5
일 때 반복문이 종료된다.
for (let i=1; i<10; i++){
if(i===5) break;
console.log(i)
}
// 1
// 2
// 3
// 4
마지막 input 요소가 0 0
일 때, 반복문을 종료시켜준다.
// 생략
for(let i=0; i<input.length-1; i++){
let a = parseInt(input[i].split(' ')[0]);
let b = parseInt(input[i].split(' ')[1]);
let answer = a+b
if(answer === 0) break;
else console.log(answer)
}