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 |