한 걸음씩

[프로그래머스][JS] 직각삼각형 출력하기 본문

Programmers

[프로그래머스][JS] 직각삼각형 출력하기

winter17 2023. 4. 5. 22:57

https://school.programmers.co.kr/learn/courses/30/lessons/120823

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

// 초기 세팅 코드
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]));
});

 

[코드 설명]

해당 코드는 Node.js에서 표준 입력을 받는 방법 중 하나인 readline 모듈을 사용하여, 사용자로부터 입력 값을 받아오는 코드.

readline 모듈은 터미널에서 입력한 내용을 읽어오기 위한 모듈로, createInterface 함수를 사용하여 input 스트림과 output 스트림을 생성한다. 여기서는 process.stdin을 input 스트림으로 사용하고, process.stdout를 output 스트림으로 사용한다.

이후 rl.on 메서드를 사용하여 line 이벤트와 close 이벤트를 등록한다. line 이벤트는 사용자가 입력한 한 줄의 문자열을 읽어 들이고, 콜백 함수 내에서 해당 값을 input 변수에 할당한다. close 이벤트는 사용자가 입력을 종료할 때 발생하며, 이때 콜백 함수가 실행된다.

따라서 위 코드에서는 사용자로부터 입력을 받아서, 입력 값의 첫 번째 요소를 출력하는 기능을 구현하고 있다.

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 () {
    const n = Number(input[0]); // 여기 코드에서 n을 받아오기 때문에 기존에 주어진 console.log가 아니라 변수명을 사용해야 함
    let triangle = '' // 삼각형을 출력할 변수
    for (let i = 1; i <= n; i++){ // n까지 반복할 수
        triangle += '*'.repeat(i) + '\n' // repeat 메서드를 사용해 반복하고 개행 필수!
    }
    console.log(triangle) // console.log로 출력
});

 

위의 코드의 주석처리 된 부분부터 내가 짠 코드인데

원래 세팅해 둔 코드를 제외하면 어려운 문제는 아니었다


리뷰

처음에 문제 코드를 보고 원래 풀던 함수 형태가 아니라 당황했다

node.js를 처음 봐서 코드 설명을 봐도 대충 그렇구나... 하는 정도인데

그 외에 별찍는 코드는 어렵지 않았다

 

return함수를 왜 쓰지 않았는가에 대해 chatgpt에게 물어보니

return은 함수가 호출됐을 때 말 그대로 값을 반환하는 역할이고

별 찍기는 출력을 해야 하는 문제이기 때문에 return이 부적절한 선택인 것!