갑자기 난이도가 확 올라가네...
https://school.programmers.co.kr/learn/courses/30/lessons/181832
# 구현
def solution(n):
answer = [[0]*n for _ in range(n)]
#우,하,좌,상 -> 나선형으로 해야 하므로
dx=[0,1,0,-1]
dy=[1,0,-1,0]
x,y=0,0
answer[x][y]=1 # 처음 시작 1로 초기화
k=2
while k<=n*n:
for i in range(4):
while True:
nx=x+dx[i]
ny=y+dy[i]
if nx>=n or ny>=n or nx<0 or ny<0 or answer[nx][ny]!=0:
break
else:
answer[nx][ny]=k
x=nx
y=ny
k+=1
return answer
- 결국 못풀었다...구현으로 풀 생각을 못했다!
- 단순 구현으로 푼 문제. 단 움직임을 조절하는 dx, dy가 우,하,좌,상 순으로 해야 나선형으로 움직일 수 있다.
- 움직이면서 배열 이내에 위치하고 움직일 위치에 0이 있으면 수를 입력한다.
- 다른 사람들은 직접 방향을 설정하는 변수를 만들고 입력가능한 배열의 끝에 도달하면 뱡향을(r,d,l,u)바꿔주는 방식으로 구현하기도 함.
# 참고
'코딩테스트' 카테고리의 다른 글
[Python] DFS 문제 풀이 정리 (0) | 2024.04.12 |
---|---|
[Python] 그리디 (0) | 2024.04.09 |
[Python] 프로그래머스 - 안전지대 (0) | 2024.04.03 |
[Python] ECC 3주차 정리 - 탐색 (0) | 2024.04.03 |
[Python] ECC 2주차 정리 - 정렬 (1) | 2024.03.29 |