본문 바로가기

프로그래밍

[프로그래머스 삼각달팽이] 파이썬 풀이

[프로그래머스 삼각달팽이] 파이썬 풀이

문제

삼각형의 구조에서 달팽이를 반시계 방향으로 밖에서 안으로 옮직였을 때, 각 시간마다 달팽이가 있는 위치를 찾는 문제.

 

Keypoints

  • 이차원배열을 할당해서 규칙에 맞게 값을 할당한다.
  • 일차원 배열로 값을 옮긴다.

Solution

def solution(n):
    N = n*(n+1)//2
    cur = 1
    boxes = [[0]*i for i in range(1, n+1)]
    # n, n-2, n-4, ...
    x,y = 0,0 
    dir = "down"
    for cur in range(1, N+1):
        boxes[y][x] = cur
        if dir=="down":
            if y+1>=n or (y+1<n and boxes[y+1][x]!=0):
                dir="right"
                x+=1
            else:
                y = y+1
        elif dir=="up":
            if y-1<0 or (y-1>=0 and boxes[y-1][x-1]!=0):
                dir="down"
                y+=1
            else:
                x-=1
                y-=1
        elif dir=="right":
            if x+1>= len(boxes[y]) or (x+1<len(boxes[y]) and boxes[y][x+1]!=0):
                dir="up"
                x-=1
                y-=1
            else:
                x+=1

    answer = []
    for y in range(n):
        for x in range(len(boxes[y])):
            answer.append(boxes[y][x])
    return answer

References

Problem Link