출처 :
https://school.programmers.co.kr/learn/courses/30/lessons/181832
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
오른방향 -> 아래방향 -> 왼쪽 방향 -> 윗방향 -> 오른방향 .. 이런식으로 진행한다
다음의 값이 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