[programmers/py] 삼각 달팽이

승민·2024년 3월 17일

알고리즘

목록 보기
84/171

삼각 달팽이

https://school.programmers.co.kr/learn/courses/30/lessons/68645

문제 설명

  • 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.

문제 풀이

방향 진행 순서는 아래, 오른, 왼쪽 위 3가지 이동을 순서대로 이동
이동하면서 값을 추가

DIRS = {0: (1, 0), 1: (0, 1), 2: (-1, -1)}
# https://school.programmers.co.kr/questions/52719
def solution(n):
    triangle_slug = [[0] * i for i in range(1, n+1)]
    r, c, num = -1, 0, 1
    
    for i in range(n):
        for _ in range(i, n):
            dir_r, dir_c = DIRS[i % 3] # {0: (1, 0), 1: (0, 1), 2: (-1, -1)}
            r, c = r + dir_r, c + dir_c
            triangle_slug[r][c] = num
            num += 1 
    return sum(triangle_slug, [])

0개의 댓글