

프로그래머스 문제를 풀려고 들어갔는데 처음부터 무엇인가 많이 적혀있는 것이 아닌가? 그래서 내가 예전에 풀었던 문제인가..? 싶어서 나갔다 들어오기까지 했다..
알고보니 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.
이라고 한다.
즉, 한 번에 한 줄 씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈이다.
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]에 저장된 값만큼 반복되며, 각 반복에서는 ''을 해당 인덱스만큼 반복하여 출력한다.