1954. 달팽이 숫자

PJH·2024년 11월 10일

코딩테스트

목록 보기
10/12

달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.

다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.

[예제]

N이 3일 경우,

N이 4일 경우,

[제약사항]

달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스에는 N이 주어진다.

[출력]

각 줄은 '#t'로 시작하고, 다음 줄부터 빈칸을 사이에 두고 달팽이 숫자를 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

def make_snail(N):  
    arr = [[0]*N for _ in range(N)]  
    num = 1  
    x,y = 0,0  
    direction = 0 # 0 : Right, 1 : down, 2 : left, 3 : up  
  
    while num <= N * N:  
        arr[x][y] = num  
        num+=1  
        dx= [0,1,0,-1]  
        dy = [1,0,-1,0]  
        nx = x + dx[direction]  
        ny = y + dy[direction]  
        if nx < 0 or nx >= N or ny < 0 or ny >= N or arr[nx][ny] != 0:  
            direction = (direction + 1) % 4  
            nx = x + dx[direction]  
            ny = y + dy[direction]  
        x,y = nx,ny  
  
    return arr  
  
  
T = int(input())  
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.  
for test_case in range(1, T + 1):  
    N = int(input())  
  
    snail = make_snail(N)  
    print(f'#{test_case}')  
    for i in range(N):  
        for j in range(N):  
            print(snail[i][j],end=" ")  
        print()
profile
공부내용 대충 끄적거리는 곳/ 머리 박아 가면서 코딩하기

0개의 댓글