React, JavaScript

[백준] JavaScript로 문제 풀기(Node.js 입출력 관리)

택이더 2022. 8. 14. 18:58

프로그래머스나 다른 알고리즘 사이트는 JavaScript의 input을 제공해주지만 백준은 JavaScript로

제출하는 조건이 없다. 그래서 node.js를 이용해 입출력을 관리하여 문제를 제출하여야 한다.

  • node.js: JavaSript 엔진으로 빌드된 JavaScript 런타임 환경

 

따라서 이번 시간에는 node.js를 통한 입출력 관리 방법을 기록하고자 한다.

 

1. 입력이 한 줄인 경우

// 입력 예 => 3 1

const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString(); // 문자 하나만 입력받을 경우

input = input.split(' '); // 한칸 띄어쓰기로 구분 input[0], input[1] 배열형식으로 꺼내쓰면 된다.

2. 입력이 여러 줄인 경우

/* 5
 5 50 50 70 80 100
 7 100 95 90 80 70 60 50
 3 70 90 80
 3 70 90 81
 9 100 99 98 97 96 95 94 93 91 */

const fs = require('fs');

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

input = input.split('\n'); // 한 줄씩 데이터 분리

const testCaseNum = +input[0];
const inputTestCase = [];

for(let i=1; i <= testCaseNum; i++){
    const arr = input[i].split(' ').map((item) => +item);
   
    const newArr = []; // testCase의 arr
    for (let i=1; i<=arr[0]; i++) {
        newArr.push(arr[i]);
    }
    const testCase = {
        N : arr[0], 
        arr: newArr,
    };
    inputTestCase.push(testCase);
}

 

  • fs: fs 내장 모듈을 현재 파일에 불러온 뒤 readFileSync 메서드를 사용하여 해당 파일 내의 데이터를 문자열로 반환 받아 input 변수에 저장해준다.
  • split(): 띄워쓰기나 줄바꿈과 같이 문자를 구분하여 배열을 생성할 때 사용한다.
  • trim(): 문자열 양 끝의 불필요한 공백등을 제외시켜 준다.

 

 

 

 

 

출처: https://www.youtube.com/watch?v=myDEDaaOd30