백준 Javascript node.js 입력받기

고광필·2022년 1월 8일
0

알고리즘

목록 보기
1/12

다양한 코딩테스트, 알고리즘 문제 풀이 사이트에는 문제를 풀며 본인의 사고력을 증진시킬 수 있습니다.

백준에는 따로 자바스크립트가 없어서 node.js 환경에서 문제를 제출하게 되어 있습니다.

문제를 많이 풀어보기도 전에 마주친 문제가 '자바스크립트에서 입력을 받을일이 있었나..?' 였습니다.
자바스크립트에서 어떻게 입력을 받을지 찾아보고 결과코드들을 공유하려고 합니다.

readline

입력 한줄

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();
});

구름에서 기본적으로 지원해주는 자바스크립트 입력받기 코드입니다.
한줄만을 입력받기 떄문에 입력이 10, 5 처럼 한줄인 경우 적합합니다.

입력 여러줄

const readline = require("readline");

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

const test = [];
rl.on("line", function (line) {
  test.push(line);
}).on("close", function () {
  console.log(test);
  process.exit();
});

구름 기본 입력양식에서 여러줄 입력받도록 수정한 코드입니다.
로컬에서는 ctrl + C를 입력하면 입력이 중단됩니다.

fs

해당 코드는 유튜브 라매개발자 님의 영상을 참고했음을 알려드립니다.

const fs = require("fs");
// 백준 플랫폼이 리눅스기 때문. 로컬에서 테스트시 input.txt에 입력받을 내용을 입력 후 파일을 읽어오는식으로 테스트
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString().split("\n");
console.log(input);
input = input[0];
console.log(input);
input = input.split(" ").map((item) => +item);
console.log(input);

solution(input[0], input[1]);

function solution(A, B) {
  // Write your code
  console.log(A + B);
}

즐겨보는 유튜브 중 라매개발자 라는분의 유튜브가 있습니다.
fs로 입력받는 코드는 그분 코드가 가장 깔끔하다고 생각되어 참고했습니다. 로컬에서 테스트시에는 폴더에 input.txt를
10
20
처럼 만들어주고 불러오는식으로 테스트합니다.

참고사항

fs가 readline보다 속도가 더 빠릅니다.
하지만 fs사용시 일부 문제에서 오류가 날 수 있습니다.

profile
이해하는 개발자를 희망하는 고광필입니다.

0개의 댓글