ALGORITHMS/구현
백준 1931 - 달팽이 배열
로그앤
2021. 12. 15. 12:01
n = 5
25 | 10 | 11 | 12 | 13 |
24 | 9 | 2 | 3 | 14 |
23 | 8 | 1 | 4 | 15 |
22 | 7 | 6 | 5 | 16 |
21 | 20 | 19 | 18 | 17 |
n = 7
import numpy as np
n = 7
GRAPH = [[0]*n for _ in range(n)]
r,c = 0,0
dist = 0
dr = [1,0,-1,0] # 하,우,상,좌
dc = [0,1,0,-1]
for i in range(n*n,0,-1):
GRAPH[r][c] = i
r+=dr[dist]
c+=dc[dist]
# BOUNDARY CHECKING --> if GRAPH[r][c] != 0, done with outer boundary (ie. "26", "10", "2"
if r < 0 or r >= n or c < 0 or c >= n or GRAPH[r][c] != 0:
r-=dr[dist]
c-=dc[dist]
dist = (dist+1)%4
r+=dr[dist]
c+=dc[dist]
print(np.asarray(GRAPH))
[[49 26 27 28 29 30 31]
[48 25 10 11 12 13 32]
[47 24 9 2 3 14 33]
[46 23 8 1 4 15 34]
[45 22 7 6 5 16 35]
[44 21 20 19 18 17 36]
[43 42 41 40 39 38 37]]