Problem Solving/boj.kr (JS)

[BOJ / 자바스크립트] 15552 : 빠른 A+B

hoiiiii 2022. 2. 5. 00:14

문제 : https://www.acmicpc.net/problem/15552

 

15552번: 빠른 A+B

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

www.acmicpc.net

 

Sol :

 백준에서 node.js로 풀 때 입력을 받을 수 있는 방법은 readline 모듈과 fs 모듈이 있다. fs모듈은 파일 시스템에서 읽어오는 구조이고 readline모듈은 Readable 스트림(ex: process.stdin 또는 file stream)에서 한 번에 한 줄씩 데이터를 읽어오는 인터페이스를 제공한다. fs모듈이 일반적으로 더 빠르지만 파일 시스템에 접근해야 하기 때문에 일부 문제에서는 접근 권한 문제 (런타임 에러 : EACCES)가 발생할 수 있다. 이럴 경우 readline모듈을 사용해야 한다. 하지만 입력이 큰 경우 readline을 사용했을 때 속도가 느려 시간 초과 판정이 나는 경우도 있기 때문에 처음 풀 때는 fs 모듈로 접근하는 것이 좋다고 생각한다.

 이 문제에서는 빠른 입력이 요구되기 때문에 fs 모듈 사용이 좋다.  

 javascript의 console.log속도가 매우 느리기 때문에 매 출력 시 console을 찍어주지 말고 문자열에 저장해둔 뒤, 콘솔은 마지막에 한 번만 출력하는 방법을 이용한다.

 

소스코드 :

const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let cnt = Number(input[0]);
let result = '';
for (let i = 1 ; i<= cnt ; i++){
    let num = input[i].split(' ');
    result += Number(num[0])+Number(num[1])+"\n";
}
console.log(result);