๐Ÿค–/๋ฐฑ์ค€

๋ฐฑ์ค€ 2447: ๋ณ„ ์ฐ๊ธฐ - 10 (Python)

sssbin 2021. 9. 8. 12:10

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

 

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

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

www.acmicpc.net

 

def star(s):
    list = []
    num = len(s)

    for i in range(3 * num):
        if i // num == 1:
            list.append(s[i % num] + ' ' * num + s[i % num])
        else:
            list.append(s[i % num] * 3)

    return list


n = int(input())
s = ['***', '* *', '***']
k = 0

while n != 3:
    n //= 3
    k += 1

for i in range(k):
    s = star(s)

for i in s:
    print(i)

 

์ดํ•ดํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ๋ฌธ์ œ..!

 

3์˜ ํŒจํ„ด์ผ ๊ฒฝ์šฐ

***

* *

***

--> ๊ฑฐ๋“ญ์ œ๊ณฑํ•  ์ˆ˜๋ก ๊ฐ€์šด๋ฐ๋ฅผ ๋น„์šฐ๊ณ  n/3์˜ ํŒจํ„ด์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ž„

 

๋”ฐ๋ผ์„œ ๋จผ์ € n์ด 3์ด ๋  ๋•Œ๊นŒ์ง€ ๋ช‡ ๋ฒˆ ๋‚˜๋ˆ„๋Š”์ง€ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ ํšŸ์ˆ˜๋งŒํผ ๋ณ„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค

์šฐ์„  ์ฒ˜์Œ์— n=3์ผ ๋•Œ์˜ ๋ฐฐ์—ด['***', '* *', '***']์„ ๋งŒ๋“ค์–ด๋†“๊ณ  

ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค 3์˜ ํŒจํ„ด -> 9์˜ ํŒจํ„ด -> 27์˜ ํŒจํ„ด -> ~~ ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค

ํ•จ์ˆ˜(star) ์•ˆ์˜ for๋ฌธ์—์„œ i//num==1์ธ ๊ฒฝ์šฐ๋Š” ๊ฐ€์šด๋ฐ๋ฅผ ๋น„์šฐ๋Š” ๊ฒฝ์šฐ!