[프로그래머스_68645] 삼각 달팽이 Python 풀이

출처: 프로그래머스

문제

image image

풀이

반시계 방향으로 삼각달팽이를 순서에 맞게 채워넣어 구현해주었습니다.

삼각형을 주어진 n의 크기로 0으로 초기화해주어 다음과 같이 만들어줍니다.

n=4일 때,
snail = [[0], 
        [0, 0],
        [0, 0, 0],
        [0, 0, 0, 0]]

i를 1씩 늘려주며 밑으로 내려가고, j를 1씩 늘려주며 오른쪽으로 이동하고, i와 j를 1씩 줄여주며 위로 올라가줍니다.

마지막에는 2차원 배열을 1차원 배열로 합쳐주어 return해줍니다.

코드

def solution(n):
    snail = [[0 for _ in range(i)] for i in range(1,n+1)]
    total = sum(range(1,n+1))
    num, move = 1, n-1
    i, j = -2, -1
    while num <= total:
        i += 2
        j += 1
        if num == total:
            snail[i][j] = num
            break
        for _ in range(move):
            snail[i][j] = num
            num += 1
            i += 1
        for _ in range(move):
            snail[i][j] = num
            num += 1
            j += 1
        for _ in range(move):
            snail[i][j] = num
            num += 1
            i -= 1
            j -= 1
        move -= 3

    answer = []
    for k in range(n): answer.extend(snail[k])
    return answer

Leave a comment