✏️기록하는 즐거움
article thumbnail

Link

 

10991번: 별 찍기 - 16

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

 

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력 > 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력 > 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

| 예제 입력 1

3

| 예제 출력 1

   *
  * *
 * * *

| 예제 입력 2

4

| 예제 출력 2

   *
  * *
 * * *
* * * *

 

제출

// Solution 1
const fs = require("fs");

const input = Number(
  process.platform === "linux" ? fs.readFileSync("/dev/stdin").toString() : `4`
);

let blank = input;
let star = 0;

for (let i = 1; i <= input; i++) {
  blank -= 1;
  star = i;

  console.log(" ".repeat(blank) + "* ".repeat(star));
}
// Solution 2
const fs = require("fs");

const input = Number(
  process.platform === "linux" ? fs.readFileSync("/dev/stdin").toString() : `4`
);

let blank = input;
let star = 0;

let answer = "";

for (let i = 1; i <= input; i++) {
  blank -= 1;
  star = i;

  answer += " ".repeat(blank) + "* ".repeat(star) + "\n";
}

console.log(answer.trimEnd());

 

풀이과정

공백과 별의 개수를 변수로 두어 풀었다.

이전 문제와 동일하게 풀어내면 된다 :)

 

Solution 2의 경우, answer에 줄바꿈 문자가 들어가서 마지막에 한 줄이 더 생기기 때문에

trimEnd() 메서드로 문자열 끝의 공백을 제거해주었다.

 

개념

String.prototype.trimEnd()

  • 문자열 끝 공백이 제거된 새 문자열을 반환한다.
  • 문자열에 공백이 없어도 에러가 발생하지 않고, 복사본을 반환한다.

Comment

for문 안에서 매번 console.log를 찍어주는 것보다 하나의 문자열에 저장한 뒤, for문 밖에서 출력을 해주는 것이 메모리와 시간을 줄일 수 있었다.

 

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!