def solution(n):
    answer = [[0] * i for i in range(1, n+1)]
    answer[0][0] = 1
    y, x = 0, 0
    move = [[1,0],[0,1],[-1,-1]]
    mode = 0
    counter = 2
    check = 0
    while mode != 4 :
        dy, dx = move[mode][0], move[mode][1]
        if y+dy < n and x+dx < n :
            if answer[y+dy][x+dx] == 0:
                check = 0
                y, x = y + dy,x + dx
                answer[y][x] = counter
                counter += 1
            else :
                mode = (mode+1) % 3
                if check == 1 : mode = 4
                check = 1
        else :
            mode = (mode+1) % 3
            check = 1
    sum_answer = []
    for i in answer :
        sum_answer += i
    return sum_answer
    # return sum(answer, []) 속도차이 7~8배 느림

examples.png

스크린샷 2023-09-05 오후 3.28.41.png