Post

정수삼각형 lv3

🌈문제 링크

Desktop View

Desktop View

★사전에 알아야 할 것

–> 피보나치 수열 & dp

ʕっ•ᴥ•ʔっ
dp를 잘 모르겠다면 이것 클릭 ㄱㄱ

풀이

Desktop View

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(triangle):

    for i in range(1, len(triangle)): # i = 몇번째 줄인지
        for j in range(i+1): # j = 줄 안에서 인덱스

            if j == 0: # 가장 왼쪽인 경우
                triangle[i][j] += triangle[i-1][j]

            elif j == i: # 가장 오른쪽인 경우
                triangle[i][j] += triangle[i-1][-1]

            else: # 가운데인 경우, (가장 왼쪽의 우측 것과 가장 우측의 좌측 것 비교)
                triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j])
                
    return max(triangle[-1])

풀이

  • 삼각형의 각 위치 (i, j) —> i번째 행, j번째 열

for i in range(1, len(triangle)):

첫번째 행(0)은 그대로 두고, 두번째 행부터 시작해 각 위치 최대값 합 계산

i의 범위 —> 1 ≤ i ≤ len(triangle)-1

for j in range(i+1):

j(인덱스)는 열 구하는데 사용 —> 범위: i 까지

왼쪽 대각선 위에서 내려오는 경우

1
2
        `if j == 0: 
            triangle[i][j] += triangle[i-1][j]`

★ 쉽게 이해 —> 열(j)가 없으면 더 이상 왼쪽 아래로 못 내려가게 됩니다

당연히 없으니까 초기값 0 으로 설정

오른쪽 대각선 위에서 내려오는 경우

1
2
        `elif j == i: 
            triangle[i][j] += triangle[i-1][-1]`

가운데에서 내려갈 때

1
2
        `else: 
            triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j])`






참고

https://soohyun6879.tistory.com/157

https://velog.io/@seulki971227/프로그래머스-Lv.3-정수-삼각형-Python

This post is licensed under CC BY 4.0 by the author.
3D GIF