Link
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력 > 첫째 줄에 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문 밖에서 출력을 해주는 것이 메모리와 시간을 줄일 수 있었다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1463: 1로 만들기 (javascript) (0) | 2022.12.01 |
---|---|
[백준] 10992: 별 찍기 - 17 (javascript) (0) | 2022.12.01 |
[백준] 2446: 별 찍기 - 9 (javascript) (0) | 2022.11.30 |
[백준] 2522: 별 찍기 - 12 (javascript) (2) | 2022.11.30 |
[백준] 2445: 별 찍기 - 8 (javascript) (0) | 2022.11.30 |