반갑습니다!

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

알고리즘 문제 풀이

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

김덜덜이 2020. 9. 22. 19:29
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

풀이

이 문제는 제귀적으로 구현해서 해결했다.

그림을 잘 보면 테두리 도형과 내부 도형을 확인할 수 있다. 그리고 내부 도형과 테두리 도형은 크기만 다르고 똑같이 생겼기 때문에 제귀 형태로 구현하면 쉽게 해결할 수 있다.

코드

Python3

arr = []


def draw(x, y, cnt, num):
    if cnt < 1:
        return

    number = num
    for i in range(cnt):
        arr[y + i][x] = number
        number += 1
    for i in range(1, cnt):
        arr[y + cnt - 1][x + i] = number
        number += 1
    for i in range(1, cnt - 1):
        arr[y + cnt - 1 - i][x + cnt - 1 - i] = number
        number += 1
    draw(x + 1, y + 2, cnt - 3, number)


def solution(n):
    global arr
    arr = [[0] * n for _ in range(n)]
    draw(0, 0, n, 1)

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