IT/coding study

[programmers] 삼각 달팽이 (python)

seyeonHello 2022. 7. 10. 15:15

배열 재배치

 

빈 배열에 저 순서대로 채우고, 마지막에 합쳐서 출력해주었다.

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