더북(TheBook)

전체 코드

3장/삼각_달팽이.py

def solution(n):
    dx = [0, 1, -1]
    dy = [1, 0, -1]
    snail = [[0] * i for i in range(1, n + 1)]
    x = y = angle = 0
    cnt = 1
    size = (n + 1) * n    // 2   #len(snail)과 같습니다.
  
    while cnt <= size:
        snail[y][x] = cnt
        ny = y + dy[angle]
        nx = x + dx[angle]
        cnt += 1
      
        if 0 <= ny < n and 0 <= nx <= ny and snail[ny][nx] == 0:
            y, x = ny, nx
        else:
            angle = (angle + 1) % 3
            y += dy[angle]
            x += dx[angle]
      
    return [i for j in snail for i in j]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.