빈 배열에 저 순서대로 채우고, 마지막에 합쳐서 출력해주었다.
def solution(n):
answer = []
arr=[[0]*n for _ in range(n)]
arr_size=n+(n*n-n)//2 # 빈칸 제외한 부분
cnt=0
for j in range(0,n):
for i in range(j,n): # 아래로
if arr[i][j]>0: continue
arr[i][j]=arr[i-1][j]+1
cnt+=1
for i in range(j,n-j): # 오른쪽으로
if arr[n-1-j][i]>0: continue
arr[n-1-j][i]=arr[n-1-j][i-1]+1
cnt+=1
for i in range(n-1,j,-1): # 대각선(\) 위로
if arr[i][i-j]>0: continue
arr[i][i-j]=arr[i+1][i+1-j]+1
cnt+=1
if cnt==arr_size:
break
for r in range(n):
for c in range(n):
if arr[r][c]>0:
answer.append(arr[r][c])
return answer
'IT > coding study' 카테고리의 다른 글
[acmicpc] 17615. 볼 모으기(python) (0) | 2022.08.22 |
---|---|
[acmicpc] 16234. 인구 이동(python) (0) | 2022.07.15 |
[acmicpc] 18428. 감시 피하기(python) (0) | 2022.07.01 |
[acmicpc] 10800. 컬러볼(python) (0) | 2022.06.18 |
[acmicpc] 16918. 봄버맨(python) (0) | 2022.06.12 |