SWEA
1954 .달팽이 숫자
zhelddustmq
2024. 7. 15. 15:58
문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
정답 코드:
T = int(input())
for test_case in range(1, T + 1):
N = int(input())
# 1일 때
if N == 1:
print(f"#{test_case}")
print(1)
continue
# 2일 때
elif N == 2:
print(f"#{test_case}")
arr = [[1,2],[4,3]]
for i in range(len(arr)):
print(*arr[i])
continue
#3 이상부터
arr = [[None] * N for _ in range(N)]
# 한 바퀴 돌 때마다, 범위 조정 하기 위한 변수 설정
c_round = 0
# 들어갈 값
value = 1
while True:
for i in range(4):
for i in range(N - 1 - (2 * c_round)):
arr[c_round][i + c_round] = value
value += 1
arr = list(map(list, zip(*arr)))
arr.reverse()
c_round += 1
if N - c_round == 1:
if N % 2 == 1:
arr[N//2][N//2] = value
break
print(f"#{test_case}")
for i in range(N):
print(*arr[i])