๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

[๋ฐฑ์ค€] 2447 ๋ณ„ ์ฐ๊ธฐ - 10 (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2023. 7. 30. 04:37
 

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

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

www.acmicpc.net


๊ฑฐ์˜ 1๋…„ ์ „์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ. ์ง„์งœ ์•„๋ฌด๋Ÿฐ ๊ณ„๊ธฐ ์—†์ด ๊ทธ๋ƒฅ ๋œฌ๊ธˆ์—†์ด ๋‹ค์‹œ ์ƒ๊ฐ๋‚˜์„œ ํ’€์–ด๋ดค๋‹ค. ๋‹คํ–‰ํžˆ ํ•ด๊ฒฐ

 

์ด ๋ฌธ์ œ๋Š” ์žฌ๊ท€์˜ ํŠน์ง•์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค.

๊ดœ์ฐฎ์€ ๋ฌธ์ œ์ธ ๊ฑฐ ๊ฐ™๋‹ค. ๊ผญ ํ’€๊ณ  ๋‚˜์„œ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ์ฒดํ™”ํ•˜์ž.


์•„์ด๋””์–ด

์‚ฌ๊ณ ๋ฅผ ํ’€์–ด๊ฐ€๋Š” ๊ฑฐ๋ผ ์ข€ ์ถ”์ƒ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ผ๋‹จ ์ฒซ ๋ฒˆ์งธ N = 3์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

***

*  *

***

๊ทธ๋ฆฌ๊ณ  N = 9์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์—ฌ๊ธฐ์„œ ํŒจํ„ด์„ ๋‚˜๋ˆ ๋ณด๋ฉด ํฌ๊ฒŒ AํŒŒํŠธ(๋นจ๊ฐ„์ƒ‰), BํŒŒํŠธ(ํŒŒ๋ž€์ƒ‰)๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

AํŒŒํŠธ๋Š” N = 3์„ ์˜†์œผ๋กœ 3๋ฐฐ ๋Š˜๋ฆฐ ๊ฑฐ๊ณ 

BํŒŒํŠธ๋„ AํŒŒํŠธ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ฐ€์šด๋ฐ๋Š” ๊ณต๋ฐฑ ' ' ์œผ๋กœ ์ฑ„์šด ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

N = 27, N = 81๋„ ์ด ๋ฐฉ์‹์œผ๋กœ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋Ÿผ ์ด์ œ ์ด๊ฑธ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋จ.


์ „์ฒด ์ฝ”๋“œ

init = ['***', '* *', '***']

N = int(input())

def recursion(n = 3, arr = init):

    if n == N:
        return arr

    tmp = []

    for i in range(n):
        tmp.append(arr[i] * 3)

    for i in range(n):
        tmp.append(arr[i] + ' ' * n + arr[i])

    for i in range(n):
        tmp.append(arr[i] * 3)

    return recursion(n * 3, tmp)

answer = recursion(3, init)

for line in answer:
    print(line)

์ฝ”๋“œ ์„ค๋ช…

init = ['***', '* *', '***']

N = int(input())

์ผ๋‹จ N = 3์ธ ๊ฒฝ์šฐ๋Š” ๋ฏธ๋ฆฌ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

 

def recursion(n = 3, arr = init):

    if n == N:
        return arr

    tmp = []

    for i in range(n):
        tmp.append(arr[i] * 3)

    for i in range(n):
        tmp.append(arr[i] + ' ' * n + arr[i])

    for i in range(n):
        tmp.append(arr[i] * 3)

    return recursion(n * 3, tmp)

 

์ผ๋‹จ ๋ณ„ ํŒจํ„ด์„ ๋‹ด์„ ๋นˆ ๋ฆฌ์ŠคํŠธ(tmp)๋ฅผ ์„ ์–ธํ•ด ์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์„ค๋ช…ํ•œ AํŒŒํŠธ, BํŒŒํŠธ๋ฅผ ๋‚˜๋ˆ ์„œ ์‹คํ–‰ํ•ด ์ค€๋‹ค.

ํŒŒ์ด์ฌ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. append๋ฅผ ์ด์šฉํ•ด ํ•œ ์ค„์”ฉ tmp์— ๋‹ด์•„์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  n์˜ ๊ฐ’์ด N์ด ๋  ๋•Œ๊นŒ์ง€ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ค€๋‹ค.

n == N์ด๋ฉด ๋ฆฌ์ŠคํŠธ๋ฅผ return ํ•ด์ค€๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํ•œ ์ค„์”ฉ ์ถœ๋ ฅํ•ด ์ฃผ๋ฉด ๋.