양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
n | result |
---|---|
4 | [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] |
5 | [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] |
예제 1번의 n의 값은 4로 4 × 4 배열에 다음과 같이 1부터 16까지 숫자를 채울 수 있습니다.
예제 2번의 n의 값은 5로 5 × 5 배열에 다음과 같이 1부터 25까지 숫자를 채울 수 있습니다.
def solution(n):
answer = [[0] * n for _ in range(n)]
locs = 1
cnt = 1
row, col = 0, -1
while n > 0:
for i in range(n):
col += locs
answer[row][col] = cnt
cnt += 1
n -= 1
for i in range(n):
row += locs
answer[row][col] = cnt
cnt += 1
locs *= -1
return answer
dx=(0,1,0,-1)
dy=(1,0,-1,0)
def solution(n):
board=[[0]*n for i in range(n)]
x,y=0,0
board[0][0]=1
now=2
d=0
while now<=n*n:
nx,ny=x+dx[d],y+dy[d]
if not (0<=nx<n and 0<=ny<n) or board[nx][ny]:
d=(d+1)%4
continue
x,y=nx,ny
board[x][y]=now
now+=1
return board