SAMSUNG/SSAFY 준비 (swea)

[SWEA 1954번] D2 - 달팽이 숫자 (Python)

sanadoing_ 2023. 10. 27. 19:07
728x90

> 파이썬

 

 

 

 

📖 문제 : 달팽이 숫자 (Python)

 

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

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


[예제]

N이 3일 경우,


N이 4일 경우,
 


[제약사항]

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


[입력]

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

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


[출력]

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

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

 

 

 

 

내 코드

 

#   오 -> 아래 -> 왼 -> 위 방향 순
dy = [0, 1, 0, -1]
dx = [1, 0, -1, 0]

T = int(input())

for test_case in range(1, T + 1):
    N = int(input())
    y, x = 0, 0
    direction = 0  # 맨 처음 오른쪽 방향
    result = [[0] * N for _ in range(N)]
    for i in range(1, N * N + 1):
        result[y][x] = i
        #   마지막 수 채우면 반복문 탈출
        if i == N * N:
            break
        #   갈 수 있는 방향 찾을 때 까지 반복
        while True:
            yy, xx = y + dy[direction], x + dx[direction]
            if 0 <= yy < N and 0 <= xx < N and result[yy][xx] == 0:
                break
            else:
                direction = (direction + 1) % 4
        #   다음에 넣을 위치
        y, x = y + dy[direction], x + dx[direction]

    print(f'#{test_case}')
    for r in result:
        print(' '.join(map(str, r)))

 

 

 

 

 

 

swea

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

728x90