Node - Readline

da.circle·2023년 5월 31일
0

아래 문제는 프로그래머스 0단계 문제 중 '직각삼각형 출력하기' 이다.
"_"의 높이와 너비를 1이라고 했을 때, "_"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

  • 입력 : 3
  • 출력 :
    *
    **
    ***

내가 당황한건 기본으로 주어진 코드가 다음과 같았기 때문이다.

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

let input = [];

rl.on("line", function (line) {
  input = line.split(" ");
}).on("close", function () {
  console.log(Number(input[0]));
});

여기서 readline이란 뭘까?

Readline

  • 한 번에 한 줄씩 Readable 스트림(process.stdin 등)에서 데이터를 읽기 위한 인터페이스를 제공합니다.

    (라고는 하는데 이해가 잘 되지 않았다. 아마 값을 입력받는 인터페이스를 제공한다는 의미인 것 같다..)
  • 위에 있는 코드를 뜯어보자.

const readline = require("readline");

  • Node의 core modules중 하나인 readline을 import한다.
    • core modules : Node에서 자체적으로 제공하는 모듈

const rl = readline.createInterface({});

  • 입력을 받을 인터페이스를 만든다.

input: process.stdin / output: process.stdout


let input = [];

  • input을 출력해보면 문자열 요소를 가진 배열로 출력이 된다. 배열에 담길 각 값들을 담을 빈 배열을 선언한다.

rl.on("line", function (line) {input = line.split(" ");})

  • "line" : 사용자가 엔터키(\n)를 누르거나 개행한 경우(\r) 입력받은 문자열을 받아온다. (한 줄만 입력받는다!)

    event-line - nodejs.org
  • input = line.split(" "); : 입력받은 line을 input에 공백을 기준으로 나누어 넣는다.

.on("close", function () {console.log(Number(input[0]));});

  • "close" : 사용자가 입력을 마치고 콜백 함수가 실행되고 나면 인터페이스를 종료한다. 종료하지 않으면 콜백 함수 실행 후에도 사용자가 계속 입력할 수 있게 된다!

    (위 프로그래머스 문제를 풀 때는 두번째 인자인 콜백함수의 실행 부분에 코드를 작성하면 된다.)

    event-close - nodejs.org

좋은 블로그가 많아서 나도 모르게 공식문서를 소홀히 하게 된다. 공식문서를 많이 찾아보는 습관을 길러야겠다.

출처)
NodeJS 6강 - Core Module (readline) / Danny TWLC(Youtube);
Readline - nodejs.org
readline 모듈 사용하기 - leenzy
Node.js로 입력값 받기 - onys

profile
프론트엔드 개발자를 꿈꾸는 사람( •̀ ω •́ )✧

0개의 댓글