SWEA_1953_달팽이숫자

2024. 8. 24. 23:22알고리즘 풀이

T = int(input())
# 우,하,좌,상
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]

for _ in range(T):
    N = int(input())
    arr = [[0] * N for __ in range(N)]
    x, y, di = 0, 0, 0	# 초기상태 
    arr[x][y] = 1		# 처음 위치 설정
    while arr[x][y] != N**2:	# N제곱까지
        nx, ny = x + dx[di], y + dy[di]	# 다음 위치 구하기.
        # 다음 위치가 범위내, 값이 0 
        if 0 <= nx < N and 0 <= ny < N and arr[nx][ny] == 0:
            arr[nx][ny] = arr[x][y] + 1	# 이전 값에서 1더한 값
            x, y = nx, ny
        else:	# 이동할 방향 설정
            di = (di + 1) % 4
    print(f"#{_+1}")
    for ar in arr:
        print(*ar)

'알고리즘 풀이' 카테고리의 다른 글

2001_파리퇴치  (1) 2024.08.24
1983_조교의 성적 매기기  (2) 2024.08.24
SWEA_2007 패턴 마디의 길이(파이썬)  (0) 2024.08.24
SWEA_2007 패턴 마디의 길이(파이썬)  (2) 2024.08.24
3304_최장 공통 부분 수열  (2) 2024.08.24