코딩테스트

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

john-lennon 2026. 4. 28. 13:25

문제 설명

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

 

제한사항 

  • 1 ≤ n ≤ 10

입출력 예

입력 출력
3 *
**
***
n이 3이므로 첫째 줄에 * 1개, 둘째 줄에 * 2개, 셋째 줄에 * 3개를 출력합니다.

 


 

나의 코드

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]);
    let answer = '';

    for (let i = 1; i <= n; i++) {
        answer += '*'.repeat(i);
        if (i < n) {
            answer += '\n';
        }
    }
    console.log(answer);
});

 

나의 방식

  • for문으로 1줄~n줄 까지 반복
  • i를 현재 줄 번호로 사용
  • '*'.repeat(i) 를 통해 현재 줄에 필요한 별 개수 생성
  • answer += 로 문자열을 계속 누적
  • 마지막 줄 전까지만 \n 추가해서 출력 오류 방지

 

다른 사람의 코드

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 () {
    solution(Number(input[0]));
});

function solution(n) {
    for(let i = 1; i < n + 1; i++) {
        console.log('*'.repeat(i));
    }
}

 

내 코드와 차이점

for문 한 바퀴 돌 때마다 바로 console.log() → 즉시 출력형

⇒ console.log() 자체가 출력 후 자동 줄바꿈을 해줌 ...

ex) console.log('*');
      console.log('**');
      console.log('***');

내 코드 = 한 번에 문자열 완성 후 출력
이 코드 = 한 줄씩 바로 출력

 


 

느낀점

처음에는 answer에 문자열을 누적한 뒤 \n으로 줄바꿈을 직접 처리하는 방식으로 접근했는데, 다른 풀이를 보면서 console.log() 자체가 출력할 때마다 자동으로 줄바꿈된다는 점을 다시 생각하게 됐다. 이번 문제를 통해 같은 결과라도 문자열 누적 방식과 즉시 출력 방식처럼 여러 접근 방식이 있다는 점을 느꼈고, 처음에는 직접 제어하는 방식으로 이해하는 것도 중요하지만 이후에는 더 단순하고 효율적인 방식도 함께 비교해보는 시야가 필요하다는 걸 느꼈다.