import sys
n = int(sys.stdin.readline()) # 사각형의 크기
square = [[0]*n for _ in range(n)] # n x n 크기의 사각형 만들기 및 0 초기화
num = 1
move = n
x = 0; y = -1 # 첫 시작 좌표
while move > 0:
for i in range(move):
y += 1
square[x][y] = num
num += 1
move -= 1
for i in range(move):
x += 1
square[x][y] = num
num += 1
for i in range(move):
y -= 1
square[x][y] = num
num += 1
move -= 1
for i in range(move):
x -= 1
square[x][y] = num
num += 1
for i in range(n):
for j in range(n):
print(square[i][j], end=' ')
print()
탐색하듯이 방향('R','L','U','D')에 대하여 조건문을 만들어 해결할까 했지만 굳이 그렇게 할것 없이 각 방향별로 이동해야 하는 횟수와 그에 따른 x,y 값만 변경해주며 값을 채워주면 됐음. 항상 가독성과 효율성을 동시에 챙길 수 있는 깔끔한 코드를 짜기!