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

O2o2✨·2020년 12월 7일
0

알고리즘

목록 보기
12/43

문제 링크 프로그래머스 - 삼각 달팽이

코드

def solution(n):
    pyramid = [[0] * i for i in range(1, n + 1)]
    num = 1 # 배열에 넣을 숫자
    x, y = 0, 0
    
    while n > 0:
        for _ in range(n): # 아래로 이동
            pyramid[x][y] = num
            num += 1
            x += 1
        n -= 1
        x -= 1
        y += 1
        for _ in range(n): # 오른쪽으로 이동
            pyramid[x][y] = num
            num += 1
            y += 1
        n -= 1
        x -= 1
        y -= 2
        for _ in range(n): # 대각선 역방향으로 이동
            pyramid[x][y] = num
            num += 1
            x -= 1
            y -= 1
        n -= 1
        x += 2
        y += 1

    return [j for i in pyramid for j in i]

풀이

  • 삼각 달팽이를 직각 삼각형📐모양의 배열로 만든다.
  • 삼각 달팽이는 아래, 오른쪽, 대각선 역방향(↖)으로 반복해서 움직인다.
  • 이동 칸수 n은 각 방향마다 n부터 시작해서 한 칸씩 감소된다.
  • n이 점점 감소하여 0보다 클 때까지 반복한다.
  • x, y에 따라 배열을 이동하며 num을 넣는다.
profile
프론트엔드 & 퍼블리셔

0개의 댓글