[BOJ] 2447. ๋ณ„ ์ฐ๊ธฐ - 10 (๐Ÿฅ‡, ๋ถ„ํ• ์ •๋ณต)

lemythe423ยท2023๋…„ 12์›” 4์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
79/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— n x n ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋จผ์ € ์ƒ์„ฑํ•œ๋‹ค.

***
* *
***

ํ•ด๋‹น ๋ชจ์–‘์ด ๊ณ„์† ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ๋‹ค. ์ „์ฒด ๋ฐฐ์—ด์„ ๊ทธ๋ฆฌ๊ณ , n//3 ์‚ฌ์ด์ฆˆ๋กœ ์ค„์—ฌ๋‚˜๊ฐ€๋ฉด์„œ ํ•ด๋‹น ๋ชจ์–‘์„ ๊ทธ๋ ค์ฃผ๋ฉด ๋œ๋‹ค. ์ด ๋ชจ์–‘๋„ ์‚ฌ์‹ค 3x3 ๋ฐฐ์—ด์—์„œ ํ•œ ๋‹จ๊ณ„ ๋” ๋“ค์–ด๊ฐ€์„œ 1x1 ์‚ฌ์ด์ฆˆ์ผ ๋•Œ์˜ ๋ชจ์–‘๋“ค์ด ๊ฐ™์€ ํŒจํ„ด์„ ๋‘๊ณ  ๋ฐ˜๋ณต๋œ๋‹ค. n == 1 ์ผ ๋•Œ๋Š” * ํ•˜๋‚˜๋งŒ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ „์ฒด ๋ฐฐ์—ด์—์„œ n//3 ์‚ฌ์ด์ฆˆ๋กœ ์ค„์ด๋ฉด์„œ ๊ทธ๋ ค๋‚˜๊ฐˆ ๋•Œ๋Š” ์–ด๋Š ์ง€์ ๋ถ€ํ„ฐ ๊ทธ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š”์ง€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ํ•ด๋‹น ๊ทธ๋ฆผ์€ 9x9 ํฌ๊ธฐ์ธ๋ฐ ์ด ์•ˆ์— 3x3์˜ ํŒจํ„ด๋“ค์„ ๊ทธ๋ฆฌ๋ ค๋ฉด (0, 0), (0, 3), (0, 6)... ์—์„œ ์‹œ์ž‘ํ•ด์„œ 3x3 ํฌ๊ธฐ์˜ ํŒจํ„ด์„ ๊ทธ๋ ค ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค. ์ด์ค‘ for๋ฌธ์˜ ๋ฐ˜๋ณต์„ ํ†ตํ•ด์„œ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์ตœ๋Œ€ 9๊นŒ์ง€ 3๊ฐ„๊ฒฉ์œผ๋กœ ๋Œ๋ฉด์„œ ์ขŒํ‘œ ๊ฐ’์ด (3, 3) ์ผ ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ํŒจํ„ด์„ ๊ทธ๋ ค์ฃผ๋ฉด ๋œ๋‹ค.

n = int(input())
star = [[" "] * n for _ in range(n)]


def draw(n, x, y):
    if n == 1:
        star[x][y] = "*"
        return 
    
    for i in range(x, x+n, n//3):
        for j in range(y, y+n, n//3):
            if (i, j) == (x+n//3, y+n//3): continue
            draw(n//3, i, j)

draw(n, 0, 0)
for row in star:
    print("".join(row))
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€