🔗 Problem Link 

 

프로그래머스

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

programmers.co.kr


❔Thinking

  • 주어진 삼각형을 반시계 방향으로 채워나가는 방법은 다음과 같은 과정의 반복이다.
    1. 층을 내려가면서, 숫자를 하나씩 늘려 채워나간다.
    2. 같은 층의 오른쪽으로 끝까지 가면서, 숫자를 하나씩 늘려 채워나간다.
    3. 층을 올라가면서, 숫자를 하나씩 늘려 채워나간다.
  • 위와 같은 방법으로 채워진 삼각형을 각 층의 왼쪽부터 차례대로 리스트에 담아 반환한다.

💻Solution

def solution(n):
    answer = []
    triangle = [[0 for _ in range(i)] for i in range(1, n+1)]
    num = 1
    x, y = -1,0
    for i in range(n):
        for _ in range(i, n):
            if i % 3 == 0:
                x += 1
            elif i % 3 == 1:
                y += 1
            else:
                x -= 1
                y -= 1
            triangle[x][y] = num
            num += 1
    for i in triangle:
        answer += i
    return answer

🗝️keypoint

  1. 도형 문제를 보다 편리하게 이해하고 풀이하는 방법은, 좌표평면으로 치환하는 것이다.
  2. '층을 내려가고, 오른쪽 끝까지 이동하고, 층을 올라가는'  과정이 순서대로 총 n번 일어난다. ( = 3으로 나눈 나머지)
  3. 0,3,6... 번째 -> 내려가기  |  1,4,7... -> 오른쪽 끝까지 이동하기   2,5,8... -> 올라가기 
  4. 반복되는 과정에서 값을 변경할 때에는, list를 활용하는것이 편리하다. (문자열은 특정 index 값의 변경이 불가능하다)

+ Recent posts