Algorithm/SWEA
[SWEA] 1954 ๋ฌํฝ์ด ์ซ์ (ํ์ด์ฌ/python)
chjcoder
2023. 10. 17. 15:34
๐๋ฌธ์
๐์๊ณ ๋ฆฌ์ฆ ๋ฐ ์ ๊ทผ
๊ตฌํ
1. (0,-1)์์ ์์ํด์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉฐ ๋ฆฌ์คํธ ๋ฐ๊นฅ์ผ๋ก ๋๊ฐ๋ฉด ๋ฐฉํฅ์ ์๋๋ก ๋ฐ๊พผ๋ค
2. ์๋์ชฝ, ์ผ์ชฝ, ์์ชฝ ๋ชจ๋ ์ฐจ๋ก๋ก ๋ฐ๋ณตํ๋ค.
๐ป์ฝ๋
# sw 1954 ๋ฌํฝ์ด ์ซ์
def Snail(t,n):
lst = [[0 for _ in range(n)]for _ in range(n)]
dx = [0,1,0,-1] # ์ฐ, ํ, ์ข, ์
dy = [1,0,-1,0]
x,y = 0,-1 # ์ค๋ฅธ์ชฝ์ผ๋ก +1 ํ๋ฉด์ ์์ํ๋ฏ๋ก ์ด๊ธฐ์ขํ 0,-1๋ก ์ค์
direction = 0 # ๋ฐฉํฅ์ ์ค์ ํ ์์๋๋ก ๋ฐ๊ฟ ๋ ์ฌ์ฉํ ๋ณ์
for i in range(1,n*n+1):
x += dx[direction]
y += dy[direction]
if x < 0 or x > (n-1) or y < 0 or y > (n-1) or lst[x][y] != 0: # lst ๋ฐ์ผ๋ก ๋๊ฐ๋ฉด
x -= dx[direction] # ๋ค์ ๋นผ์ฃผ๊ณ
y -= dy[direction]
direction = (direction + 1) % 4 # ๋ฐฉํฅ ๋ฐ๊ฟ์ฃผ๊ณ
x += dx[direction] # ๋ฐ๊พผ ๋ฐฉํฅ์ผ๋ก ๋ค์ ๋ํด์ฃผ๊ณ
y += dy[direction]
lst[x][y] = i
print(f"#{t}")
for i in range(n):
print(*lst[i])
T = int(input()) # ํ
์คํธ ์ผ์ด์ค ๊ฐ์
for t in range(1,T+1):
n = int(input()) # ๋ฌํฝ์ด ํฌ๊ธฐ
Snail(t,n)
๐์ฝ๋ ์ค๋ช
์ฃผ์๊ณผ ์์ ์ค๋ช ์ผ๋ก ๋์ฒดํ๋ค.