코딩테스트 대비

[코딩테스트] node.js 입출력 작성 방법

JellyApple 2024. 6. 27. 22:34

이번에 코딩테스트를 본격적으로 준비하면서 JS로 언어를 바꿨는데 문제 푸는 사이트마다 node.js는 특히 입출력 시 생소하게 작성해야 해서 코딩테스트 시작하기 전에 정리하면 편할 것 같아서 정리해보고자 한다.

fs와 readline을 사용하는 경우가 있다. 허나 fs가 더 빠르다해서 백준에서도 권장하는 방식이다. 

1. 한 개의 입력 값을 받을 때 

1) fs

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let N = Number(input[0]);

 

2) readline 

const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
  });
  
rl.on("line" , (line) => {
   const inputValue = line.trim();
   console.log(inputValue);
   rl.close();
 });

 

2. 한 줄에 여러 개 입력 받을 때 

1) fs 

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let [N,K] = input[0].split(" ").map(Number);

 

2) readline

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  });
  
  rl.on("line", (line) => {
    const inputValues = line.trim().split(" ");
    rl.close();
  });

 

3. 공백 없이 여러 개 입력 받을 때 

1) fs 

const fs = require('fs');

const input = fs.readFileSync('/dev/stdin').toString().trim().split('');
console.log(input); // 입력값 출력

 

2) readline

const readline = require("readline");

const rl = readline.createInterface({
   input: process.stdin,
   output: process.stdout,
 });
 
 rl.on("line", (line) => {
   const inputValues = line.trim().split("");
   console.log(inputValues);
   rl.close();
   });

 

4. 한 줄에 한 개씩 여러 줄로 입력 값을 받을 때 

1) fs 

const fs = require('fs');

const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
let N = Number(input[0]);
let values = input.slice(1, N + 1);
values.forEach(value => {
  console.log(value); // 각 입력값 출력
});

 

2) readline 

const readline = require("readline");
const input = [];
const rl = readline.createInterface({
   rl.on("line", (line) => {
   input.push(line.trim());
   });
   
rl.on("close" , () => {
 console.log(input);
 });

 

5. 여러 개의 입력 값을 특정 형식으로 받을 때 

1) fs

const fs = require('fs');

// 전체 입력을 받아 한 줄씩 나누어 배열로 저장
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

// 첫 줄의 숫자 N을 읽어 숫자로 변환
const numberLine = parseInt(input[0].trim());

// N개의 줄을 배열로 저장
const input2 = input.slice(1, numberLine + 1).map(line => line.trim());

// input2를 출력 (또는 다른 작업 수행)
console.log(input2);

 

2) readline 

const readline = require("readline");

const input2 = [];
let numberLine = 0;
rl.on("line", (line) => {
  if (numberLine === 0) {
    numberLine = parseInt(line.trim());
  } else {
    input.push(line.trim());
    if (input.length === numberLine) {
      rl.close();
    }
  }

  rl.on("close", () => {
    console.log(input2);
  });
});

 

예제 출력 값 : [ 'hello', 'world', 'test' ]

'코딩테스트 대비' 카테고리의 다른 글

소프티어 - LV1 연탄 배달의 시작  (0) 2024.06.27