LEVEL3/정수삼각형

Q·2021년 8월 4일
0

문제 설명


전체 코드

def solution(triangle):
    k = 2

    for i in range(1,len(triangle)):
        for j in range(k):
            if j == 0:
                triangle[i][j] = triangle[i][j] + triangle[i-1][j]
            elif j == i:
                triangle[i][j] = triangle[i][j] + triangle[i-1][j-1]
            else:
                triangle[i][j] = triangle[i][j] + max(triangle[i-1][j],triangle[i-1][j-1])
        k += 1

    return max(triangle[-1])

해결 방법

이 문제는 그냥 풀이법을 외웠다.

triangle 이중리스트가 피라미드 형태인 것을 보면서 인덱스 1번부터 시작하여 반복문을 돌린다. 두 번째 인덱스부터 행의 원소는 2개 이므로 k= 2부터 시작하여 다음 triangle의 행으로 갈때마다 k에 +1을 해준다.

그 후 for문을 이용하여 k만큼 돌리며 j가 맨 앞과 맨 뒤일때는 바로 이 전의 위에 있는 원소를 더해준다.

이 코드가

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

j가 맨 앞과 맨 뒤가 아니라면 위에 있는 2개의 원소 중에서 max인 것을 더해준다.

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

그리고 triangle리스트의 마지막 행에서 max값을 반환한다.

profile
Data Engineer

0개의 댓글

관련 채용 정보