[프로그래머스] Lv2. 삼각 달팽이

lemythe423·2023년 7월 26일
0
post-thumbnail

문제 링크

풀이

파이썬에 1000x1000 배열까지는 감당 가능하다고 해서 배열을 그린 뒤에 하나씩 숫자를 써넣었다. 방향은 ⬇️ ➡️ ↖️ 이렇게 세 방향을 계속해서 반복했다.
n = 4라고 할때, 처음에는 4칸 ⬇️, 다음은 3칸 ➡️, 다음은 2칸 ↖️, 다음은 1칸 ⬇️ 과 같은 방식으로 그려지는 걸 알 수 있다. 방향과 칸 수를 계속 바꿔주면서 그린다음에 0칸이 나오면 종료한다.

def solution(n):
    dx = (1, 0, -1)
    dy = (0, 1, -1)
    arr = [[0] * n for _ in range(n)]

    def draw_triangle(n):
        num, d, x, y = 1, 0, -1, 0
        while True:
            if n == 0:
                break

            for _ in range(n):
                x += dx[d]
                y += dy[d]
                arr[x][y] = num
                num += 1

            n -= 1
            d = (d+1)%3

    draw_triangle(n)

    answer = []
    for i in range(n):
        answer.extend(arr[i][:i+1])

    return answer
profile
아무말이나하기

0개의 댓글