๐ ๋ฌธ์
์์ ๋ฅผ ๋ณด๊ณ ๊ท์น์ ์ ์ถํ ๋ค์ ๋ณ์ ์ฐ์ด ๋ณด์ธ์.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ ํญ์ 3×2^k
์์ด๋ค. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k๋ ์ ์)
๐์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ N๋ฒ์งธ ์ค๊น์ง ๋ณ์ ์ถ๋ ฅํ๋ค.
๐ ์์ ์ ๋ ฅ
24
๐ ์์ ์ถ๋ ฅ
*
* *
*****
* *
* * * *
***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * * * * * *
* * * * * * * * * * * * * * * *
***** ***** ***** ***** ***** ***** ***** *****
๐ ๋ฌธ์
์ฌ์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ์๋ค.
๊ทธ๋์ ์ง๋ฌธ๊ฒ์ํ์ ์๋ ๊ธ๋ค์ ์ดํผ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
์ด ๋ณ์ฐ๊ธฐ์ ํต์ฌ์ ๋ถํ ์ด๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์๋ ๋ฌด์กฐ๊ฑด 3×2^k ์ผ๋ก (3,6,12,24...) ๊ฐ ์๋ค.
๊ทธ๋ฌ๋ฉด 24๊น์ง ๋ณ์ด ์ด๋ป๊ฒ ์ฐํ๋์ง ์ดํด๋ณด์.
๋ณ๋ค์ ๋ณด๋ฉด ํํ์ ์ ์ธํ ์ธ๊ฐ๋ฅผ ํฉ์ณ๋์ ๊ฒ๊ณผ ๊ฐ๋ค.
์ฆ n=6์ n=3 ์ง๋ฆฌ ์ธ๊ฐ๋ก ๊ทธ๋ฆด ์ ์๊ณ , n=12๋ n=6 ์ง๋ฆฌ ์ธ๊ฐ๋ก ๊ทธ๋ฆด ์ ์๊ณ , n=24๋ n=12์ง๋ฆฌ ์ธ๊ฐ๋ก ๊ทธ๋ฆด ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ , n=3 ์ผ๋๋ ์ผ์ชฝ๊ณผ ๊ฐ์ด ๋ณ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
์ ๊ทธ๋ฆผ์ n=6 ์ผ๋ ๋ณ๋ค์ ์์ ์ขํ์ด๋ค.
์ฒซ๋ฒ์งธ ๋ณ์ (0, n-1)
๋๋ฒ์งธ ๋ณ์ (n/2, (n-1)-n/2)
์ธ๋ฒ์งธ ๋ณ์ (n/2, (n-1)+n/2)
์ด๋ค.
๐ป ์ฝ๋
import sys
input = sys.stdin.readline
N = int(input())
arr = [[' ']*(2*N-1) for i in range(N)] # ์ ๋ถ ๊ณต๋ฐฑ์ผ๋ก ๋ ๋ฐฐ์ด ์์ฑ ์ฌ๊ธฐ์ ๋ณ์ ๊ทธ๋ฆผ
def makeStar(n, x, y): # x,y๋ ์ขํ
if n == 3: # n=3 ์ด๋ผ๋ฉด ๋ณ ๊ทธ๋ฆผ
arr[y][x] = '*'
arr[y+1][x-1:x+2] = '* *'
arr[y+2][x-2:x+3] = '*****'
return
else:
makeStar(n / 2, x, y) # ์์ชฝ๋ณ
makeStar(n / 2, int(x - (n / 2)), int(y + (n / 2))) # ์ผ์ชฝ๋ณ
makeStar(n / 2, int(x + (n / 2)), int(y + (n / 2))) # ์ค๋ฅธ์ชฝ๋ณ
# ํจ์ ํธ์ถ
makeStar(N, N-1, 0)
# ๊ทธ๋ ค์ง ๋ณ๋ค์ ์ถ๋ ฅ
for i in arr:
print(''.join(i))
์ฐธ๊ณ ์๋ฃ : https://ku-hug.tistory.com/149,
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13565๋ฒ: ์นจํฌ - ํ์ด์ฌ (0) | 2022.06.09 |
---|---|
[๋ฐฑ์ค] 1926๋ฒ: ๊ทธ๋ฆผ - ํ์ด์ฌ (0) | 2022.06.08 |
[๋ฐฑ์ค] 14494๋ฒ: ๋ค์ด๋๋ฏน์ด ๋ญ์์? - ํ์ด์ฌ (0) | 2022.06.05 |
[๋ฐฑ์ค] 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ - ํ์ด์ฌ (0) | 2022.06.03 |
[๋ฐฑ์ค] 1697๋ฒ: ์จ๋ฐ๊ผญ์ง - ํ์ด์ฌ (0) | 2022.06.02 |