본문 바로가기
Algorithm/Node.js(백준)

[백준 tip] node.js 입출력

by _sweep 2021. 12. 5.

 

💻 node.js 입출력

node.js에서 입출력을 받을 때는 readline 모듈을 사용한다.

백준에서 문제를 풀 때 fs모듈을 사용하는 것이 더 빠르다고 하지만 나는 onecompiler로 문제를 풀고 있기 때문에 readline 모듈을 쓰는 것이 아직은 좀 더 편하다.

 

readline 모듈을 이용해 입출력의 틀을 잡자면 아래 코드와 같다.

 

const readline = require('readline'); 
const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); 
rl.on('line', function (line) {
  // 입력 받기
}) 
.on('close', function () {
  // 문제에 따른 알고리즘 작성 후 console.log()로 답 출력
  process.exit(); 
});

 

위 주석으로 처리해둔 입력받는 부분에서는 line을 통해 사용자가 입력한 문자열을 받을 수 있다.

그리고 이것을 다른 변수에 저장한 후 아래에서 입력된 데이터를 알맞게 처리하면 되는 것이다.

 

line에는 문자열 형식으로 저장되기 때문에 정수형으로 바꾸기 위해서는 parseInt()를 사용해 형변환을 해야 한다.

 

 

예시 1. 여러 개의 수가 한줄로 입력될 때 (공백으로 구분)

 

const readline = require('readline'); 
const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); 
let arr = [];
rl.on('line', function (line) {
  arr = line.split(' ');
}) 
.on('close', function () {
  console.log(arr);
  process.exit(); 
});

arr이라는 빈 배열을 선언한 후 들어온 입력(line)을 공백으로 구분해 arr에 넣어주었다.

사진과 같이 여러 개의 수를 공백을 포함해 입력하였을 때 공백을 기준으로 숫자가 분리되어 문자열 형태로 arr 배열에 들어있는 것을 볼 수 있다.

만약 숫자인 형태로 저장하고 싶다면 따로 arr.map(Number)를 해주면 된다.

 

 

예시 2. 여러 줄이 입력될 때

 

const readline = require('readline'); 
const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); 
let arr = []; 
rl.on('line', function (line) {
  arr.push(line);
}) 
.on('close', function () {
  console.log(arr);
  process.exit(); 
});

line을 이용해 입력을 받을 때는 입력이 끝날 때까지 한줄씩 받아온다.

따라서 arr이라는 빈 배열을 선언한 후 입력받을 때마다 arr이라는 배열에 push한다.

역시 기본형이 문자형이기 때문에 arr 배열에는 문자형으로 된 숫자들이 들어오게 된다.

만약 이를 정수형으로 바꾸고 싶다면 parseInt()를 통해 정수형으로 받아 arr에 push할 수 있다.

+ 추가로 Number()를 사용하거나 parseFloat()을 사용할 수 있다.

 

 

 

 

'Algorithm > Node.js(백준)' 카테고리의 다른 글

[10799번] 쇠막대기  (0) 2021.12.26
[10797번] 10부제  (0) 2021.12.05
[2309번] 일곱 난쟁이  (0) 2021.12.04
[13701번] 중복 제거  (0) 2021.12.04

댓글