[백준 / Node.js] 15552번: 빠른 A+B

FE.1·2022년 5월 27일

본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.

또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.

입력

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

출력

각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.

예제 입력1

5
1 1
12 34
5 500
40 60
1000 1000

예제 출력1

2
46
505
100
2000

주어진 문제는 테스트케이스가 최대 1,000,000개가 발생할 수 있다. 따라서 콘솔을 매번 찍어주는 방식은 시간초과가 발생함으로 개행문자를 포함한 문자열을 콘솔로 한번 찍어주는 방식이 시간초과를 해결할 수 있다.

(시간초과 ㅠㅠ)

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");

const TESTCASE = input.shift();
for (let i = 0; i < TESTCASE; i++) {
  const [num1, num2] = input[i].split(" ").map((item) => +item);
  console.log(num1 + num2);
}

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");

const TESTCASE = input.shift();
let answer = "";
for (let i = 0; i < TESTCASE; i++) {
  const [num1, num2] = input[i].split(" ").map((item) => +item);
  answer += num1 + num2 + "\n";
}
console.log(answer);
profile
공부하자!

0개의 댓글