Algorithm for Coding Test/Swea
SWEA D2 1954 달팽이 숫자
달린다 동구리
2021. 10. 7. 19:46
728x90
반응형
이 코드는 Python으로 작성했습니다.
T = int(input())
for tc in range(1, T+1):
N = int(input())
snail = [[0]*N for _ in range(N)]
# row, col 인덱스로 탐색할 수 있게 방향 설정 (달팽이 방향이니까 우->하->좌->상)
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
# 초기 위치 & 회전방향 설정
row, col = 0, 0
# 0:우, 1:하, 2:좌, 3:상
rc_plus = 0
for i in range(1, N*N + 1):
snail[row][col] = i
row += dr[rc_plus]
col += dc[rc_plus]
if row < 0 or col < 0 or row >= N or col >= N or snail[row][col] != 0:
# 인덱스를 다시 원위치
row -= dr[rc_plus]
col -= dc[rc_plus]
# 0, 1, 2, 3 접근을 위해 나머지로 수행
rc_plus = (rc_plus + 1) % 4
# 방향 바뀌고 다시 증가
row += dr[rc_plus]
col += dc[rc_plus]
print('#{}'.format(tc))
for j in snail:
print(*j)
문제 출처 : SW Expert Academy
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
728x90
반응형