# [Algorithm/JS] ๋ฐฑ์ค 2447๋ฒ ๋ณ ์ฐ๊ธฐ
๐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ (opens new window)
# Question
0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ ์ N์ด ์ฃผ์ด์ง๋ค. ์ด๋, N!์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ฌ๊ท์ ์ธ ํจํด์ผ๋ก ๋ณ์ ์ฐ์ด ๋ณด์. N์ด 3์ ๊ฑฐ๋ญ์ ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ ํ ๋, ํฌ๊ธฐ N์ ํจํด์ NรN ์ ์ฌ๊ฐํ ๋ชจ์์ด๋ค.
ํฌ๊ธฐ 3์ ํจํด์ ๊ฐ์ด๋ฐ์ ๊ณต๋ฐฑ์ด ์๊ณ , ๊ฐ์ด๋ฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์นธ์ ๋ณ์ด ํ๋์ฉ ์๋ ํจํด์ด๋ค.
***
* *
***
2
3
N์ด 3๋ณด๋ค ํด ๊ฒฝ์ฐ, ํฌ๊ธฐ N์ ํจํด์ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์์ง ๊ฐ์ด๋ฐ์ (N/3)ร(N/3) ์ ์ฌ๊ฐํ์ ํฌ๊ธฐ N/3์ ํจํด์ผ๋ก ๋๋ฌ์ผ ํํ์ด๋ค. ์๋ฅผ ๋ค์ด ํฌ๊ธฐ 27์ ํจํด์ ์์ ์ถ๋ ฅ 1๊ณผ ๊ฐ๋ค.
# Input
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 3์ ๊ฑฐ๋ญ์ ๊ณฑ์ด๋ค. ์ฆ ์ด๋ค ์ ์ k์ ๋ํด N=3k ์ด๋ฉฐ, ์ด๋ 1 โค k < 8์ด๋ค.
# Output
์ฒซ์งธ ์ค๋ถํฐ N๋ฒ์งธ ์ค๊น์ง ๋ณ์ ์ถ๋ ฅํ๋ค.
# Example
# Input
27
# Output
***************************
* ** ** ** ** ** ** ** ** *
***************************
*** ****** ****** ***
* * * ** * * ** * * *
*** ****** ****** ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
********* *********
* ** ** * * ** ** *
********* *********
*** *** *** ***
* * * * * * * *
*** *** *** ***
********* *********
* ** ** * * ** ** *
********* *********
***************************
* ** ** ** ** ** ** ** ** *
***************************
*** ****** ****** ***
* * * ** * * ** * * *
*** ****** ****** ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Solution
์์ง ๋ฌธ์ ๋ง ๋ณด๊ณ ํจํด์ ํ์ ํ๋ ๋ฅ๋ ฅ์ด ๋ง์ด ๋ถ์กฑํ๋ค. ํจํด์ ๋ถ์ํ๋ ๋ฅ๋ ฅ์ ๋ง์ด ๊ธธ๋ฌ์ผ๊ฒ ๋ค.
๋จผ์ N ์ด 9์ผ ๋๋ฅผ ๊ฐ์ ํด๋ณด์.
*********
* ** ** *
*********
*** ***
* * * *
*** ***
*********
* ** ** *
*********
2
3
4
5
6
7
8
9
ํจํด์ ๋ณด๋ฉด ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ผ ํ ๋ค๋ ๊ฒ ์ฏค์ ๊ธ๋ฐฉ ์ ์ ์์ ๊ฒ์ด๋ค. ๊ฐ ๋ฐ๋ณต๋ฌธ์ ๋ณ์๋ฅผ i, j ๋ผ๊ณ ์๊ฐํ๊ณ ๊ฐ์ฅ ํฐ ๊ณต๋ฐฑ์ ์ ์ธํ๊ณ ์ดํด๋ณผ ๋, ๊ณต๋ฐฑ์ ๊ฐ๋ก ๋ฐฉํฅ๊ธฐ์ค (1, 1), (1, 4), (1,7) ... , ์ธ๋ก๋ฐฉํฅ ๊ธฐ์ค (1, 1), (4, 1), (7, 1)... ํจํด์ด๋ค.
๊ทธ๋ ๋ค ์ ํจํด์์ i์ j ๋ฅผ 3์ผ๋ก ๋๋์์ ๋ ๋๋จธ์ง๊ฐ 1์ธ ์ขํ๊ฐ ๊ณต๋ฐฑ์ด ๋๋ค. ๊ณต์์ผ๋ก ํ์ด๋ด์๋ฉด,
if (i % 3 === 1 && j % 3 === 1) {
// ๊ณต๋ฐฑ ์ฒ๋ฆฌ
}
2
3
์ฌ๊ธฐ๊น์ง ํ์ด๋ด๋ฉด ์๋์ ๊ฐ์ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
*********
* ** ** *
*********
*********
* ** ** *
*********
*********
* ** ** *
*********
2
3
4
5
6
7
8
9
๋ค์์ผ๋ก ๊ฐ์ด๋ฐ, ํฐ ์ ์ฌ๊ฐํ ํํ์ ๊ณต๋ฐฑ์ ์ฒ๋ฆฌํด์ค์ผํ๋ค.
ํด๋น ๊ณต์์ ๊ฐ ์ขํ i ์ j ๋ฅผ 3์ผ๋ก ๋๋์ด ์์์ ํ์๋ฆฌ ๊ณต๋ฐฑ์ ์ฒ๋ฆฌํ ๋์ ๋์ผํ๊ฒ ์์ฑํ ์ ์๋ค.
((i/3) % 3 === 1 && (j/3) % 3 === 1) {
// ๊ณต๋ฐฑ ์ฒ๋ฆฌ
}
2
3
์ ๊ณต์์ ํ์ฉํด ์๋์ ๊ฐ์ด ํ์ดํ ์ ์๋ค.
# ์ต์ข ํ์ด
const input = Number(require('fs').readFileSync('dev/stdin').toString().trim());
const lines = [];
function fillStar(num) {
for (i = 0; i < num; i++) {
for (j = 0; j < num; j++) {
star(i, j, num);
}
lines.push('\n');
}
}
function star(i, j, num) {
if (i % 3 === 1 && j % 3 === 1) {
lines.push(' ');
} else {
if (num === 1) {
lines.push('*');
} else {
star(Math.floor(i / 3), Math.floor(j / 3), Math.floor(num / 3));
}
}
}
fillStar(input);
console.log(lines.join(''));
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25