[프로그래머스] Level 2 삼각 달팽이 - 구현 (Python3)

Jun·2025년 3월 26일

알고리즘

목록 보기
18/19

문제 링크

바로가기

문제 풀이

def solution(n):
    num = 1
    type = 1
    idx = 0
    arr = [[] for _ in range(n)]
    answer = []
    
    while n >= 0:
      if type % 3 == 1:
        for _ in range(0, n):
            arr[idx].insert(type // 3, num)
            num += 1
            idx += 1
        idx -= 1
      elif type % 3 == 2:
        for i in range(1, n + 1):
            arr[idx].insert(type // 3 + i, num)
            num += 1
        idx -= 1
      elif type % 3 == 0:
        for _ in range(0, n):
            arr[idx].insert(len(arr[idx]) - type // 3 + 1, num)
            num += 1
            idx -= 1
        idx += 2
      n -= 1
      type += 1
    
    for i in arr:
       for j in i:
          answer.append(j)

    return answer

문제를 보고 특정한 알고리즘을 이용해 문제를 풀어야 하겠다기 보다는 단순 구현으로 문제를 풀 수 있을 것이라고 생각하였다. 그 이유는 반복되는 규칙이 많이 보였기 때문이다.

  1. 먼저 숫자는 왼쪽 / 아래 / 오른쪽 순으로 채워진다.
  2. 숫자가 채워지는 만큼은 N -> N - 1 -> N - 2 순으로 채워진다.

N이 4일 때, 1234로 왼쪽이 채워지고, 567로 아래, 89로 오른쪽, 10으로 왼쪽이 채워지는 형태이다.

그래서 while문으로 반복하면서 N이 0이 될때 벗어나도록 하였고, 왼쪽, 아래, 왼쪽에 대한 분기를 타서 번호를 삽입하도록 진행하였다.

새롭게 배운 점

X

profile
2D | 3D 프론트엔드 개발자

0개의 댓글