Study/Node.js

[노드 JS] 입력 받기

AC 2021. 3. 30. 13:23

 

최근 다시 Node JS를 배우게 되었다. 다시 복습겸 포스팅 함..


 

1. readline 모듈 사용

소스 코드1 (한 줄 입력)


 

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.on('line', function(line) {
  console.log(line);

  rl.close();
}).on("close", function() {
  process.exit();
});

기본적으로 매개변수 line에 할당되는 것이 입력값이며, 문자열로 할당됨.

그리고 console.log(line); 에 의해 입력 받은 값이 출력됨

 

소스 코드2 (여러 줄 입력)


const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];

rl.on('line', function (line) {
  input.push(line)
})
  .on('close', function () {
  console.log(input);
  process.exit();
});

 

2. fs 모듈 사용

 

두 번째 방법으로는 fs모듈을 사용하는 방법이 있다.

readline으로 시간 초과가 나올 때 사용한다.

 


소스 코드 1 (한 줄 입력)

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

let num = Number(input);

for (let i = 1; i <= num; i++) {
  console.log(i);
}

 

소스 코드 2 (여러 줄 입력)

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

let count = input[0];
let numbers = [];

for (let i = 1; i < input.length; i++) {
  if (input[i] !== '') {
    numbers.push(input[i].split(' '));
  }
}

for (let i = 0; i < numbers.length; i++){
  let num1 = Number(numbers[i][0]);
  let num2 = Number(numbers[i][1]);

  console.log(num1 + num2);
}

 

위 방법으로도 시간 초과로 문제가 해결되지 않는 경우가 종종 있다고 한다..

LIST