Algorithm/SWEA

[SWEA] 1954 ๋‹ฌํŒฝ์ด ์ˆซ์ž (ํŒŒ์ด์ฌ/python)

chjcoder 2023. 10. 17. 15:34

๐ŸŽˆ๋ฌธ์ œ

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&problemLevel=3&problemLevel=4&contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE&problemTitle=&orderBy=SUBMIT_COUNT&selectCodeLang=JAVA&select-1=4&pageSize=10&pageIndex=1

 

๐ŸŽ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ ‘๊ทผ

๊ตฌํ˜„

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)

๐ŸŽ„์ฝ”๋“œ ์„ค๋ช…

์ฃผ์„๊ณผ ์œ„์˜ ์„ค๋ช…์œผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.