풀이
- 원래 작성하던 방식의 풀이가 기억이 나지않아
- 4개의 while 문에 코드를 반복하여 해결
- 위 코드가 이번에 작성한 코드
- 아래 코드가 푼 이후에 생각난 풀이 코드 방식
def solution(n):
mtx = [[0]*n for _ in range(n)]
i,vi,j,vj = 0,n-1,0,n-1
s = 1
r = 0
while s <= n*n:
while j <= vj and mtx[i][j] == 0:
mtx[i][j] = s
s += 1
j += 1
i,j = i+1,j-1
while i <= vi and mtx[i][j] == 0:
mtx[i][j] = s
s += 1
i += 1
i,j = i-1,j-1
while j >= r and mtx[i][j] == 0:
mtx[i][j] = s
s += 1
j -= 1
i,j = i-1,j+1
while j >= r and mtx[i][j] == 0:
mtx[i][j] = s
s += 1
i -= 1
i,j = i+1,j+1
vi,vj = vi-1,vj-1
r += 1
return mtx
def solution(n):
dy = [0, 1, 0, -1]
dx = [1, 0, -1, 0]
y, x = 0, -1
arr = [[0] * n for _ in range(n)]
cnt = 1
direction = 0
while cnt <= n**2:
ny, nx = y + dy[direction], x + dx[direction]
if 0 <= ny < n and 0 <= nx < n and not arr[ny][nx]:
arr[ny][nx] = cnt
cnt += 1
y, x = ny, nx
else:
direction = (direction + 1) % 4
return arr
'알고리즘' 카테고리의 다른 글
[프로그래머스, 파이썬] 공원 산책 (0) | 2024.02.19 |
---|---|
[프로그래머스, 파이썬] 옹알이(1) (0) | 2024.02.16 |
[백준, 파이썬, 1544번] 사이클 단어 (0) | 2024.02.15 |
[백준, 파이썬, 3023번] 마술사 이민혁 (1) | 2024.02.15 |
[백준, 파이썬, 1835번] 카드 (0) | 2024.02.14 |