๊ธ€ ์ž‘์„ฑ์ž: ๋˜ฅํด๋ฒ .
๋ฐ˜์‘ํ˜•
ํ•ด๋‹น ๊ธ€์˜ ๋‚ด์šฉ์€ ์ตœ์ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹Œ ๊ธ€์“ด์ด์˜ ์ฃผ๊ด€์ ์ธ ํ’€์ด์ž…๋‹ˆ๋‹ค. ๋” ์ข‹์€ ํ’€์ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ํ”ผ๋“œ๋ฐฑ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค(__)

 

๋งํฌ


https://www.acmicpc.net/problem/2447

 

2447๋ฒˆ: ๋ณ„ ์ฐ๊ธฐ - 10

์žฌ๊ท€์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณ„์„ ์ฐ์–ด ๋ณด์ž. N์ด 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ  ํ•  ๋•Œ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ N×N ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค. ํฌ๊ธฐ 3์˜ ํŒจํ„ด์€ ๊ฐ€์šด๋ฐ์— ๊ณต๋ฐฑ์ด ์žˆ๊ณ , ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ๋ณ„์ด ๏ฟฝ

www.acmicpc.net

 

๋ฌธ์ œ ์„ค๋ช…


 ์žฌ๊ท€์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณ„์„ ์ฐ์–ด ๋ณด์ž.

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

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

***
* *
***

 

N์ด 3๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์ง„ ๊ฐ€์šด๋ฐ์˜ (N/3) ×(N/3) ์ •์‚ฌ๊ฐํ˜•์„ ํฌ๊ธฐ N/3์˜ ํŒจํ„ด์œผ๋กœ ๋‘˜๋Ÿฌ์‹ผ ํ˜•ํƒœ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๊ธฐ 27์˜ ํŒจํ„ด์€ ์˜ˆ์ œ ์ถœ๋ ฅ 1๊ณผ ๊ฐ™๋‹ค.

 

 

 

์ œํ•œ ์กฐ๊ฑด


์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ด๋‹ค. ์ฆ‰ ์–ด๋–ค ์ •์ˆ˜ k์— ๋Œ€ํ•ด N=3k์ด๋ฉฐ, ์ด๋•Œ 1 ≤ k < 8์ด๋‹ค.

 

 

 

์ž…์ถœ๋ ฅ ์˜ˆ


<์ž…๋ ฅ 1>

27

 

<์ถœ๋ ฅ 1>

***************************
* ** ** ** ** ** ** ** ** *
***************************
***   ******   ******   ***
* *   * ** *   * ** *   * *
***   ******   ******   ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
*********         *********
* ** ** *         * ** ** *
*********         *********
***   ***         ***   ***
* *   * *         * *   * *
***   ***         ***   ***
*********         *********
* ** ** *         * ** ** *
*********         *********
***************************
* ** ** ** ** ** ** ** ** *
***************************
***   ******   ******   ***
* *   * ** *   * ** *   * *
***   ******   ******   ***
***************************
* ** ** ** ** ** ** ** ** *
***************************

 

 

ํ’€์ด


package main

import "fmt"

const MinimumUnit = 3
var N int
var result [][]byte

func inputStar(num, rowIndex, colIndex int) {
	if num < N && rowIndex == 0 && colIndex == 0 {
		inputStar(num * MinimumUnit, 0, 0)
	}
    
    // ์ •์‚ฌ๊ฐํ˜•์˜ ์ค‘๊ฐ„ ๋ถ€๋ถ„
	emptyStartIndex := num / MinimumUnit
	emptyEndIndex := (num / MinimumUnit) * 2

	for i := emptyStartIndex + rowIndex; i < emptyEndIndex + rowIndex; i++ {
		for j := emptyStartIndex + colIndex; j < emptyEndIndex + colIndex; j++ {
			result[i][j] = ' '
		}
	}
    
    // ๋ชจ๋“  row์™€ column์„ ๋Œ์•˜์„ ๊ฒฝ์šฐ
	if rowIndex + num > N-1 && colIndex + num > N-1 {
		return
	}
    
    // row๊ฐ€ ๋์— ๋„๋‹ฌ ํ–ˆ์„ ๊ฒฝ์šฐ
	if rowIndex + num > N-1 {
		inputStar(num, 0, colIndex + num)
		return
	}
    
    // row ์ฆ๊ฐ€
	inputStar(num, rowIndex + num, colIndex)
}

func main() {
	_, _ = fmt.Scan(&N)
	result = make([][]byte, N)
    
    // Slice ์ดˆ๊ธฐํ™”
	for i := 0; i < N; i++ {
		rowNum := N+1 // ๋์— '\n' ๋ฌธ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๋ฅผ N+1๋กœ ์žก์Œ
		if i == N-1 {
			rowNum = N
		}
		result[i] = make([]byte, rowNum)
	}
	for i := 0; i < len(result); i++ {
		for j := 0; j < len(result[i]); j++ {
			result[i][j] = '*'
		}
	}
	inputStar(MinimumUnit, 0, 0)

	printResult := make([]byte, 0, (N * N) + (N-1))
	for i := 0; i < len(result); i++ {
		if i < len(result) - 1 {
			result[i][N] = '\n'
		}
		printResult = append(printResult, result[i]...)
	}
	fmt.Println(string(printResult))
}

 

 

ํ’€์ด ์„ค๋ช…


 ๋ฌธ์ œ์—์„œ ํฌ์ธํŠธ๋Š” ํŒจํ„ด์˜ ๊ฐ€์šด๋ฐ์— ๊ณต๋ฐฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํฌ๊ธฐ๊ฐ€ 27์ธ ์ •์‚ฌ๊ฐํ˜•์€ ๊ฐ€์šด๋ฐ์— 9x9 ๋นˆ ์ •์‚ฌ๊ฐํ˜•์ด ์žˆ๊ณ  ํฌ๊ธฐ๊ฐ€ 9์ธ ์ •์‚ฌ๊ฐํ˜•์€ ๊ฐ€์šด๋ฐ์— 3x3์˜ ๋นˆ ์ •์‚ฌ๊ฐํ˜•์ด ์žˆ๋‹ค.

 ์ž…๋ ฅ๋ฐ›์€ N๋งŒํผ N x N ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ฐ€์šด๋ฐ ๋ฒ”์œ„ ๋ถ€๋ถ„์„ ์ง€์›Œ์ฃผ๋Š” ์ „๋žต์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

 

<๊ทธ๋ฆผ 1> ํฌ๊ธฐ๊ฐ€ 9์ธ ์ •์‚ฌ๊ฐํ˜•

Step 1. N x N ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด์„ *๋กœ ๋ชจ๋‘ ์ฑ„์›Œ์ค€๋‹ค.

 

<๊ทธ๋ฆผ 2> ์ตœ์†Œ ๋‹จ์œ„์ธ ํฌ๊ธฐ๊ฐ€ 3์ธ ์ •์‚ฌ๊ฐํ˜• ๋ถ€ํ„ฐ ๊ฐ€์šด๋ฐ ๋น„์›Œ์ฃผ๊ธฐ

Step 2. ํฌ๊ธฐ๊ฐ€ 3์ธ ์ •์‚ฌ๊ฐํ˜•(์ตœ์†Œ ๋‹จ์œ„)๋ถ€ํ„ฐ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐ€์šด๋ฐ๋ฅผ ๋น„์›Œ์ค€๋‹ค.

ํ•˜๋‚˜์˜ row๋ฅผ ๋‹ค ์ˆœํšŒํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ row๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ([1, 2, 3] -> [4, 5,...], ->...)

 

 

<๊ทธ๋ฆผ 3> ๋‹ค์Œ ํฌ๊ธฐ ๋‹จ์œ„์ธ 9์ธ ์ •์‚ฌ๊ฐํ˜• ๊ฐ€์šด๋ฐ ๋น„์›Œ์ฃผ๊ธฐ

Step 3. ๊ฐ™์ด, ๋‹ค์Œ ํฌ๊ธฐ ๋‹จ์œ„์ธ 9์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐ€์šด๋ฐ๋ฅผ ๋น„์›Œ์ค€๋‹ค. ์ด ๊ณผ์ •์„ ํฌ๊ธฐ ๋‹จ์œ„๊ฐ€ N์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•