[BAEKJOON] 2439번 ⭐️별찍기
2439번 ⭐️별찍기
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
출력 예시 : 5
    *
   **
  ***
 ****
*****풀이
const fs = require("fs");
const input = fs.readFileSync("./dev/stdin").toString(); 
let baekInput = Number(input);
let stars = ""; // 공백과 별을 받을 변수 선언
for (let i = 0; i < baekInput; i++) {
  for (let j = baekInput - 1; j > i; j--) {
    stars += " "; // 먼저 공백부터 채워주기
  }
  for (let k = 0; k <= i; k++) {
    stars += "*"; // 남은 별 채워주기
  }
  stars += "\n"; // 줄 바꿈
}
console.log(stars);이번에는 별을 오른쪽부터 쌓이도록 출력해야하는 문제였다. 별을 왼쪽부터 자연스럽게 출력하는 문제와의 차이점은 중간에 공백을 넣어야한다는 점이었다.
첫 줄에는 공백*4, 별*1 이며 두번째 줄에는 공백*3. 별*2 의 형식이다. 
그렇기 때문에 동기적인 JavaScript 의 성격을 고려해서 for문 안에서 2개의 for문 이 돌아가도록 했다. 같은 변수 stars 에 공백과 별을 집어 넣고 마지막에 console.log(stars) 을 통해 출력할 생각이었다. 
위의 코드로 실행을 하면 결과값은 맞게 잘 나온다. 하지만, 이중 for문 에 심지어 for문 을 두 개나 돌린 것이 마음에 걸렸다. 
같은 스터디를 진행하고 있는 동기분들(무현님😎, 현재님✨, 동희님🌼, 영현님🧑🏻💻)과 이야기를 나눠보고 같은 문제에 대해서 코드를 공유해보니 좋은 방법이 있었다.
console.log() 를 사용할 때 공백 변수와 별 변수를 + 연산자를 통해서 더하면 됐다. 그렇게 하면 2중for문 으로 작성할 수 있다. 
const fs = require("fs");
const input = fs.readFileSync("./dev/stdin").toString(); 
let baekInput = Number(input);
let star = '';
let blank = '';
for(i = 1; i <= baekInput; i++){
    star += '*'; // 별 채우기
    for(j = baekInput; j > i; j-- ){
        blank += ' '; // 공백 채우기
    }
    console.log(blank + star);
    blank = ''; // 출력 후에 초기화를 안하면 공백이 계속 쌓인다!
}짜잔!!✨ 동일한 결과가 잘 나오는 것을 볼 수 있다. 찝찝한 마음을 남겨뒀던 코드가 훨씬 나아진 것 같아서 마음에 든다. 앞으로는 정답을 출력하는 것도 중요하지만 누가봐도 이해하기 좋은 코드를 작성할 수 있도록 고민도 더 해보려고 한다.
Author And Source
이 문제에 관하여([BAEKJOON] 2439번 ⭐️별찍기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jun_n3/BAEKJOON-2439번-별찍기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)