✏️기록하는 즐거움
article thumbnail

Link

 

10952번: A+B - 5

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

문제

두 정수 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()을 해주어야할지 애매하다ㅠㅠ

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!