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
728x90
'SAMSUNG > SSAFY 준비 (swea)' 카테고리의 다른 글
[SWEA 1974번] D2 - 스도쿠 검증 (Python) (0) | 2023.10.27 |
---|---|
[SWEA 2001번] D2 - 파리 퇴치 (Python) (1) | 2023.10.27 |
[SWEA 1926번] D2 - 간단한 369게임 (Python) (0) | 2023.10.27 |
[SWEA 1204번] D2 - [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (Python) (0) | 2023.10.27 |
[SWEA 1859번] D2 - 백만 장자 프로젝트 (Python) (1) | 2023.10.27 |