# [Algorithm/JS] ๋ฐฑ์ค€ 2447๋ฒˆ ๋ณ„ ์ฐ๊ธฐ

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (opens new window)

# Question

0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, N!์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์žฌ๊ท€์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณ„์„ ์ฐ์–ด ๋ณด์ž. N์ด 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ  ํ•  ๋•Œ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ Nร—N ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค.

ํฌ๊ธฐ 3์˜ ํŒจํ„ด์€ ๊ฐ€์šด๋ฐ์— ๊ณต๋ฐฑ์ด ์žˆ๊ณ , ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ๋ณ„์ด ํ•˜๋‚˜์”ฉ ์žˆ๋Š” ํŒจํ„ด์ด๋‹ค.

***
* *
***
1
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
1

# Output

***************************
* ** ** ** ** ** ** ** ** *
***************************
***   ******   ******   ***
* *   * ** *   * ** *   * *
***   ******   ******   ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
*********         *********
* ** ** *         * ** ** *
*********         *********
***   ***         ***   ***
* *   * *         * *   * *
***   ***         ***   ***
*********         *********
* ** ** *         * ** ** *
*********         *********
***************************
* ** ** ** ** ** ** ** ** *
***************************
***   ******   ******   ***
* *   * ** *   * ** *   * *
***   ******   ******   ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
1
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์ผ ๋•Œ๋ฅผ ๊ฐ€์ •ํ•ด๋ณด์ž.

*********
* ** ** *
*********
***   ***
* *   * *
***   ***
*********
* ** ** *
*********
1
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) {
  // ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ
}
1
2
3

์—ฌ๊ธฐ๊นŒ์ง€ ํ’€์–ด๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

*********
* ** ** *
*********
*********
* ** ** *
*********
*********
* ** ** *
*********
1
2
3
4
5
6
7
8
9

๋‹ค์Œ์œผ๋กœ ๊ฐ€์šด๋ฐ, ํฐ ์ •์‚ฌ๊ฐํ˜• ํ˜•ํƒœ์˜ ๊ณต๋ฐฑ์„ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผํ•œ๋‹ค.

ํ•ด๋‹น ๊ณต์‹์€ ๊ฐ ์ขŒํ‘œ i ์™€ j ๋ฅผ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ์œ„์—์„œ ํ•œ์ž๋ฆฌ ๊ณต๋ฐฑ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

((i/3) % 3 === 1 && (j/3) % 3 === 1) {
	// ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ
}
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(''));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

์ฐธ๊ณ  ๋ฌธ์„œ (opens new window)

Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39