[BOJ/백준] 2439번 별 찍기 -2 (Node.js)

ubin·2023년 9월 5일

백준 문제 풀이

목록 보기
6/9
post-thumbnail

🖇️ 문제


기본 별찍기 다음 단계의 문제이다. 바로 별을 오른쪽 정렬 시켜 출력하는 것.

📝 코드 계획

1. 별 찍기의 기본 반복문 작성
2. 각 층(행)마다 별 개수는 그대로 넣고, (n-현재층)만큼의 공백을 앞에 넣어주기
3. 문자열로 모두 저장하여 한 번에 출력

🔍 전체 코드

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);
let result = ''; //문자열로 한 번에 출력하기

for (let i = 0; i<n; i++){ 
  for(let k = 0; k<n-(i+1); k++) { 
    //앞에 n-현재 층의 별 개수 만큼 공백 넣어주기
    result += ' ';
  }
  for (let j = 0; j<=i; j++){
    //현재 층만큼 별 넣어주기
    result += '*';
  }
  //각 층이 끝나면 줄바꿈을 더해주어 층 구분해주기
  result += '\n';
}

console.log(result);

🖍️ 코드 해설

이번 문제는 기존 별찍기 반복문 속에 '오른쪽 정렬'이라는 조건을 추가해서 코드를 작성해야 하는데, 
2중 for 반복문에서 별을 찍기 전에 공백을 넣어주면 어떨까라는 생각을 했다.
어차피 문자열에 저장되는 것이기 때문에 상관없기 때문이다.

그래서 별을 출력하는 반복문 위에 공백을 출력하는 반복문을 추가했다. 
이 때 공백 출력 반복문은 n(전체 층 수)에서 현재 층의 별 개수를 뺀만큼 넣어주도록 하였다. 
근데 반복문에선 0부터 시작하기 때문에 공백 조건문에서는 (i+1)만큼 빼주도록 하였다. 
profile
프론트엔드 개발자가 되고싶은 코린이⌨️

0개의 댓글