728x90
반응형
출처 :
https://school.programmers.co.kr/learn/courses/30/lessons/181832
오른방향 -> 아래방향 -> 왼쪽 방향 -> 윗방향 -> 오른방향 .. 이런식으로 진행한다
다음의 값이 0이 아닌 것을 체크하여 진행한다.
def solution(n):
answer = [[0 for i in range(n)] for j in range(n)]
num = 1
i,j = 0,0
dir = "right"
while num < (n * n + 1):
answer[i][j] = num
# 오른쪽으로 진행
if dir == "right":
if (j < n - 1) and (answer[i][j+1] == 0):
j += 1
else:
dir = "down"
i += 1
elif dir == "down":
if (i < n - 1) and (answer[i+1][j] == 0):
i += 1
else:
dir = "left"
j-= 1
elif dir == "left":
if (j > 0) and (answer[i][j-1] == 0):
j -= 1
else:
dir = "up"
i -= 1
else:
if (i > 0) and (answer[i-1][j] == 0):
i -= 1
else:
dir = "right"
j += 1
num += 1
#print(answer)
return answer
반응형