ย
ย
ํ์ด๋ณด๊ธฐ
๋ง์ง๋ง ๋ณ ๊ฐ์๋ฅผ ์ธ๋ณด๋๊น 3์ผ ๋ 5, 5์ผ ๋ 9, 7์ผ ๋ 13์ด๋ค.
input * 2 - 1์ด ํ์ํ ๋๋ฌด์ ๋๋น๋ค.
๊ทธ๋ฆฌ๊ณ ๋งจ์์์ ๋ณ์ด ํ๊ฐ, ๊ทธ ๋ฐ์ผ๋ก๋ ์์ชฝ์ผ๋ก 1๊ฐ์ฉ๋ง ์ถ๊ฐ๋๋ค.
๋ชจ๋ ์์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ด input * 2 - 1 ๊ธธ์ด์ ๋ฐฐ์ด์ ๋ง๋ ๋ค. >> ๊ฐ์ด๋ฐ ๋ถ๋ถ์ ๋ณ๋ก ๋ฐ๊พผ๋ค.
for๋ฌธ์ input๋งํผ ๋ฐ๋ณตํ๋ฉด์ ๋ด๋ถ์์ mid ๊ธฐ์ค -i, +i ์์น์ ๊ณต๋ฐฑ๋ฌธ์์ด์ ๋ณ๋ก ๋ฐ๊ฟ์ค๋ค.
[ " ", " ", "*", " ", " "]
[ " ", "*", "*", "*", " "]
[ "*", "*", "*", "*", "*"]
ย
๋ฌธ์์ด์ด ์๋๋ผ ์์ ๋ฐฐ์ด๋ก result ๋ฐฐ์ด์ ๋ชจ์์ฃผ๊ฒ ๋๋ฉด ์๊ธฐ๋ ๋ฌธ์ ๊ฐ ํ๋ ์๋๋ฐ, result ๋ฐฐ์ด์ arr๋ฅผ for๋ฌธ์ ๋ฃจํ ๋ง์ง๋ง์ ํญ์ pushํด์ฃผ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก arr๋ฅผ ์ฐธ์กฐํ์ผ๋ก ๋ฃ์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง์ result ๋ฐฐ์ด์ ํ์ธํด๋ณด๋ฉด ๋ชจ๋ arr๋ฅผ ๊ฐ๋ฆฌํค๋ ์์์ด๋ฏ๋ก ๋ณ๋ก ๊ฐ๋์ฐฌ ๋ฐฐ์ด๋ง ๋ํ๋๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ result.push([...arr])์ ๊ฐ์ด ์คํ๋ ๋์ฐ์ฐ์๋ก ๋ด๋ถ ๊ฐ์ ๊บผ๋ด์์ ๋ค์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด ๋ฃ์ ์ ์๋ค.
ํ์ง๋ง ์ถ๋ ฅํ ๋ join๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด์ค ๊ฒ์ด๋ฏ๋ก ์์ ๊ฐ์ด arr๋ฅผ ๊ณ์ ๊ฐ๋ฆฌํค๋ ๋ฌธ์ ๋ ์๊ธฐ์ง ์๋๋ค.
ย
function answer(height) {
let result = [];
let arr = new Array(height * 2 - 1).fill(" ");
let mid = Math.floor(arr.length / 2);
arr[Math.floor(arr.length / 2)] = "*";
for (let i = 0; i < height; i++) {
arr[mid - i] = "*";
arr[mid + i] = "*";
result.push(arr.join(""));
}
return result.join("\n");
}
let input = [3, 5, 7];
for (let i = 0; i < input.length; i++) {
// process.stdout.write(`#${i + 1} `);
console.log(answer(input[i]));
}