문제 설명
""의 높이와 너비를 1이라고 했을 때, ""을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.
처음보는 readline
이라는 것이 나왔다.
이것에 대해 대략적으로 공부를 해야 문제를 풀 수 있었다.
readline 이란?
Readable Stream
에서 한번에 한줄씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈
const readline = require('readline')
require()
함수를 통해 readline 모듈을 불러온다.
interface 객체를 이용하여 콘솔에서 표준 입출력 처리를 할 수 있다.
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
stdin은 standard input
의 약자
stdout은 standard output
의 약자
rl.on('line', (line) => {
// 입력 받은 값을 처리하는 코드 //
rl. close();
});
rl.on('close', () => {
// 입력이 끝나고 실행하는 코드 //
process.exit();
});
on()
메서드를 활용하여 이벤트와 콜백함수를 전달'line'
입력 받은 값을 한 줄씩 읽어 문자열 타입으로 전달하는 역할을 하는 이벤트rl.close()
인터페이스를 종료. 무한히 입력받는 것을 방지한다.close
를 작성하여 입력이 끝난 후 실행되어야 할 함수를 작성함.그래서 위의 내용으로 이번 문제를 풀어보자
require()
함수를 통해 readline
변수로 readline
모듈을 불러온다.createInterface()
함수를 통해 rl
변수로 input
, output
interface를 생성합니다. on
메서드를 활용하여 'line'
이벤트를 콜백함수 매개변수로 전달해서 입력받은 값을 한줄씩 읽어 문자열 타입으로 저장할 수 있게 함수를 만듭니다.*
이 추가로 생성되는 것을 확인할 수 있습니다. 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; i++)
console.log('*'.repeat(i));
});