문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
예제
예제 입력1: 5
예제 출력1:
*
***
*****
*******
*********
*******
*****
***
*
해결
속도: 104ms
별이 늘어나는 코드와 줄어드는 코드로 나눠서 작성했다.
5를 입력 했을 때 빈칸과 별의 수는 아래와 같다.
4, 1
3, 3
2, 5
1, 7
0, 9
별은 열이 늘어날 때마다 +2씩 늘어나는 걸 확인 할 수 있다.
빈칸은 input과 연결시켜 봤을 때 -1씩 줄어드는 걸 확인 할 수 있다.
이걸 0부터 시작하는 반복문에 적용하면 아래와 같다.
function drawStars() {
const blanks = input - (i + 1);
const stars = i + (i + 1);
}
늘어나는 코드에 위의 drawStars 함수를 호출해준다.
for (i = 0; i < input; i += 1) {
drawStars();
}
*
***
*****
*******
*********
줄어드는 빈칸과 별의 수는 다음과 같다.
1, 7
2, 5
3, 3
4, 1
별이 찍히는 모양과 규칙은 동일하기 때문에 줄어드는 코드에 drawStars 함수를 동일하게 호출 할 수 있다.
for (i = input - 2; i >= 0; i -= 1) {
drawStars();
}
이를 합쳐서 출력한다.
*
***
*****
*******
*********
*******
*****
***
*
코드
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
input = parseInt(line);
}).on("close", () => {
let star = [];
function drawStars() {
const blanks = " ".repeat(input - (i + 1));
const stars = "*".repeat(i + (i + 1));
star.push(`${blanks}${stars}`);
}
for (i = 0; i < input; i += 1) {
drawStars();
}
for (i = input - 2; i >= 0; i -= 1) {
drawStars();
}
console.log(star.join("\n"));
});
'Algorithm' 카테고리의 다른 글
[node.js] 백준 1157 - 단어 공부 (0) | 2024.10.13 |
---|---|
[node.js] 백준 10988 - 팰린드롬인지 확인하기 (0) | 2024.10.12 |
[node.js] 백준 3003 - 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2024.10.12 |
[node.js] 백준 5622 - 다이얼 (3) | 2024.10.12 |
[node.js] 백준 11718 - 그대로 출력하기 (1) | 2024.10.11 |