[BAEKJOON] 2438번 별찍기⭐️

JU CHEOLJIN·2021년 7월 13일
0

Algorithm

목록 보기
5/16
post-thumbnail

2438번 별찍기⭐️

문제

2438번 별찍기

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

풀이

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 = 0; j <= i; j++) {
    stars += "*"; // 반복해서 별 추가해주기
  }
  stars += "\n"; // 별 추가 후에 줄바꿈 넣어주기
}
console.log(stars);

고전적인 문제 중에 하나 별찍기⭐️ 문제이다. 처음에는 console.log(stars) 를 반복문에 넣어서 작성했고 예상한 결과와는 다르게 한개짜리 * 이 여러번 찍히게 됐다. 이유는 console.log() 의 경우에 같은 줄로 출력이 되지 않기 때문이었다.

해결책으로 stars 라는 변수를 만들어서 *\n 을 반복해서 넣을 수 있도록 조정했다. 한 번의 console.log(stars) 호출을 통해서 원하는 결과값을 얻을 수 있었다.

사실, console.log() 의 성격을 이용해서 아래처럼 작성할 수 있다.

let stars2 = "";

for (let i = 0; i < baekInput; i++) {
  stars2 += "*"; // 반복해서 * 추가
  console.log(stars2); // 반복해서 출력, 자동으로 줄바꿈
}

console.log() 을 여러 번 반복출력하는데 이 때 stars2 에는 * 이 하나씩 늘어나므로 위와 같은 결과를 출력한다. 시간 상으로 어떤 것인 유리한지 궁금해서 돌려봤는데 단일 for문 을 사용한 아래 경우가 조금 더 빠른 속도를 보였다.

profile
사회에 도움이 되는 것은 꿈, 바로 옆의 도움이 되는 것은 평생 목표인 개발자.

0개의 댓글