[Programmers] 직각삼각형 출력하기

그래도 해야지·2023년 4월 18일
0

Programmers

목록 보기
15/40
post-thumbnail

문제 설명
""의 높이와 너비를 1이라고 했을 때, ""을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

✍🏻 알아야할 지식

처음보는 readline이라는 것이 나왔다.
이것에 대해 대략적으로 공부를 해야 문제를 풀 수 있었다.

readline 이란?
Readable Stream에서 한번에 한줄씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈

1. 모듈 불러오기

const readline = require('readline')

require() 함수를 통해 readline 모듈을 불러온다.

2. interface 객체 만들기

interface 객체를 이용하여 콘솔에서 표준 입출력 처리를 할 수 있다.

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

stdin은 standard input의 약자
stdout은 standard output의 약자

3. 입출력 코드 작성하기

rl.on('line', (line) => {
  // 입력 받은 값을 처리하는 코드 //
  rl. close();
});
  
rl.on('close', () => {
  // 입력이 끝나고 실행하는 코드 //
  process.exit();
});
  • on() 메서드를 활용하여 이벤트와 콜백함수를 전달
  • 'line' 입력 받은 값을 한 줄씩 읽어 문자열 타입으로 전달하는 역할을 하는 이벤트
  • rl.close() 인터페이스를 종료. 무한히 입력받는 것을 방지한다.
    그 후, 다시 이벤트로 close를 작성하여 입력이 끝난 후 실행되어야 할 함수를 작성함.

🤔 해설

그래서 위의 내용으로 이번 문제를 풀어보자

  1. require() 함수를 통해 readline 변수로 readline 모듈을 불러온다.
  2. createInterface() 함수를 통해 rl 변수로 input, output interface를 생성합니다.
  3. on 메서드를 활용하여 'line' 이벤트를 콜백함수 매개변수로 전달해서 입력받은 값을 한줄씩 읽어 문자열 타입으로 저장할 수 있게 함수를 만듭니다.
    그리고 각 라인마다 실행 후 종료를 반복합니다.
  4. 실행하고 종료할 때마다 i값이 증가하게 되고, 각 줄마다 *이 추가로 생성되는 것을 확인할 수 있습니다.

✅ 답

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

0개의 댓글