본문 바로가기

algorithm/exercise

[BOJ 1913] 백준 1913 달팽이

문제

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

 

1913번: 달팽이

N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서

www.acmicpc.net

풀이

 

 

python3

import time

dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]

def solution(now_x, now_y):
    direction = 0
    now_num = N*N

    while True:
        if now_num <= 0:
            break


        if 0 <= now_y < N and 0 <= now_x < N and snail_list[now_y][now_x] == 0:
            snail_list[now_y][now_x] = now_num
            now_num -= 1
            now_x += dx[direction]
            now_y += dy[direction]

        else:
            now_x -= dx[direction]
            now_y -= dy[direction]
            direction = (direction + 1) % 4
            now_x += dx[direction]
            now_y += dy[direction]




if __name__ == '__main__':
    N = int(input())
    find_num = int(input())

    snail_list = [[0] * N for i in range(N)]

    solution(0, 0)


    for i in range(N):
        for j in range(N):
            print(snail_list[i][j], end=' ')
            if snail_list[i][j] == find_num:
                find_x, find_y = j + 1, i + 1
        print()

    print(find_y, find_x)

 

아쉬웠던점