Link
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 > 입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
입력의 마지막에는 0 두 개가 들어온다.
출력 > 각 테스트 케이스마다 A+B를 출력한다.
제출
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `1 1
2 3
3 4
9 8
5 2
0 0`
).split("\n");
let i = 0;
let answer = "";
while (stdin[i].trim() != "0 0") {
const A = Number(stdin[i].split(" ")[0]);
const B = Number(stdin[i].split(" ")[1]);
answer += `${A + B}\n`;
i++;
}
console.log(answer);
풀이과정
1) for문을 사용하여 풀기
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `1 1
2 3
3 4
9 8
5 2
0 0`
).split("\n");
for (let i = 0; i < stdin.length - 1; i++) {
const A = Number(stdin[i].split(" ")[0]);
const B = Number(stdin[i].split(" ")[1]);
console.log(A + B);
}
🔼 해당 문제에서 마지막에 0 두 개가 입력되기 때문에 테스트 개수를 (stdin 배열의 크기 - 1)로 잡고 코드를 작성하였다.
하지만, 문제에서 요구하는 것은 마지막에 0이 들어왔는지 확인하고 그 때 반복문을 끝내는 것이어서 틀린 답으로 인식한듯 하다.
2) while문을 사용하여 풀기 - 최종 제출
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `1 1
2 3
3 4
9 8
5 2
0 0`
).split("\n");
let i = 0;
let answer = "";
while (stdin[i].trim() != "0 0") {
const A = Number(stdin[i].split(" ")[0]);
const B = Number(stdin[i].split(" ")[1]);
answer += `${A + B}\n`;
i++;
}
console.log(answer);
🔼 입력의 마지막에 0이 두 개 입력된다 했으므로 배열의 요소중에 0이 두 번 들어오는 경우가 있다면
반복문이 종료되도록 하였다.
Comment
A와 B를 구할 때 trim()의 유무 차이를 두어 정답을 제출했다. 맞은 것 중에 위쪽이 trim()이 없는 것, 아래쪽이 trim()이 있는것인데 아직도 언제 정확하게 공백이 포함되어 trim()을 해주어야할지 애매하다ㅠㅠ
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1110: 더하기 사이클(javascript) (0) | 2022.06.14 |
---|---|
[백준] 10951: A + B - 4 (javascript) (0) | 2022.06.14 |
[백준] 2742: 기찍 N (javascript) (0) | 2022.05.01 |
[백준] 2741: N 찍기 (javascript) (0) | 2022.05.01 |
[백준] 15552: 빠른 A+B (javascript) (0) | 2022.05.01 |