JavaScript readline

오찬주·2024년 3월 10일

JAVASCRIPT

목록 보기
5/8
post-thumbnail

프로그래머스 문제를 풀려고 들어갔는데 처음부터 무엇인가 많이 적혀있는 것이 아닌가? 그래서 내가 예전에 풀었던 문제인가..? 싶어서 나갔다 들어오기까지 했다..
알고보니 readline 이라는 것이었다.

readline이 무엇인가?

공식 문서를 보면

The node:readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time.

이라고 한다.

즉, 한 번에 한 줄 씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈이다.

readline 사용 방법

  1. readline 모듈 불러오기
  2. readline 인터페이스 생성
  3. 입출력 처리하기
  • readline의 createInterface 메서드를 이용하여 readline.Interface 인스턴스를 생성
  • 인터페이스 객체는 표준 입력(키보드 입력)으로부터 데이터를 읽고, 표준 출력(콘솔)로 데이터를 출력함

문제 풀이

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 () {
    for(let i = 1; i <= +input[0]; i += 1) console.log('*'.repeat(i));
});

하나하나 해석을 해보겠다.

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

readline 모듈의 createInterface 함수를 사용해 인터페이스 객체 rl을 생성한다. 이 객체는 표준 입력 즉, 키보드 입력으로부터 데이터를 읽고, 표준 출력 즉, 콘솔로 데이터를 출력할 수 있도록 한다.


let input = []

이 배열은 나중에 사용자로부터 입력된 값들을 저장할 용도로 사용한다.


rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    for(let i = 1; i <= +input[0]; i += 1) console.log('*'.repeat(i));
});
  • line 이벤트 핸들러: 사용자가 엔터를 입력할 때마다 호출된다. 입력된 값은 line 매개변수를 통해 전달되며, split 함수를 사용하여 공백을 기준으로 분할한 후 input 배열에 저장한다.

  • close 이벤트 핸들러: 사용자가 입력을 마치고 종료하면 호출된다. 이때는 input 배열에 저장된 값들을 기반으로 반복문을 실행하여 별()을 출력한다. 이 반복문은 input[0]에 저장된 값만큼 반복되며, 각 반복에서는 ''을 해당 인덱스만큼 반복하여 출력한다.


profile
프론트엔드 엔지니어를 희망합니다 :-)

0개의 댓글