문제 링크
풀이
const n = parseInt(require("fs").readFileSync("/dev/stdin").toString());
let piece = "*" + " *".repeat(Math.floor((n-1)/2)) + "\n" + " *".repeat(Math.floor(n/2));
for (let i=0; i<n; i++) {
if (i == n-1) console.log(piece+"\n");
else console.log(piece);
}
규칙은 두 줄짜리 패턴이 n번 만큼 출력되는 것이다. 두 줄짜리 패턴 내에 별의 개수는 n과 같지만, 그 위치는 위 아래 위 아래 번갈아서 추가된다. 패턴의 첫 번째 줄은 "*" + "*".repeat(Math.floor((n-1)/2))와 같고, 두 번째 줄은 " *".repeat(Math.floor(n/2))와 같다. 이 두 줄을 합한 패턴을 n번만큼 반복하는데, 이 때 마지막으로 출력되는 패턴을 제외하고 나머지는 모두 마지막에 줄바꿈을 더한다.
이 문제를 풀면서 Python처럼 문자열에 곱셈 연산자를 사용해버렸다. JavaScript에서는 문자열에 곱셈 연산자를 사용하면 NaN을 반환한다. String.prototype.repeat 메서드를 사용하면 문자열을 반복한 값을 얻을 수 있다.
"*"*5 // NaN
"*".repeat(5) // '*****'
"*".repeat(0) // ''
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 2902] KMP는 왜 KMP일까? with Node.js (0) | 2021.04.02 |
---|---|
[백준 14501] 퇴사 with Python (0) | 2021.04.02 |
[백준 10808] 알파벳 개수 with Node.js (0) | 2021.04.01 |
[백준 1002] 터렛 with Python (0) | 2021.03.31 |
[백준 5585] 거스름돈 with Node.js (0) | 2021.03.31 |