728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/43105
https://www.acmicpc.net/problem/1932
<문제 풀이>
- 삼각형의 꼭대기에서 바닥까지의 합을 구하는 것이므로, 아래 칸으로 이동할 때 윗 칸의 숫자를 더해준다.
- 삼각형의 왼쪽 변의 숫자는 항상 왼쪽 숫자를 더하고, 오른쪽 변의 숫자는 항상 오른쪽 숫자를 더한다.
- 삼각형의 가운데 숫자들은 자신의 위의 숫자 2개에서 큰 값을 더하면 된다.
- 숫자를 다 더한 바닥의 숫자들 중 최댓값을 반환한다.
<코드>
def solution(triangle):
for i in range(len(triangle)):
for j in range(len(triangle[i])):
if len(triangle[i])==1:
continue
if j==0:
triangle[i][j] += triangle[i-1][j]
elif j==len(triangle[i])-1:
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])
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[동적계획법] 난이도2, 이취코 220p '개미 전사' (Python) (0) | 2021.11.29 |
---|---|
[탐욕법] 난이도1, 2019 SW 마에스트로 입학 테스트 '볼링공 고르기' (Python) (0) | 2021.11.26 |
[이분탐색] 난이도2, Zoho 인터뷰 '정렬된 배열에서 특정 수의 개수 구하기' (Python) (0) | 2021.11.25 |
[이분탐색] 프로그래머스 L4 '가사 검색' (Python) (0) | 2021.11.25 |
[구현] 난이도1, Facebook 인터뷰 '문자열 재정렬' (Python) (0) | 2021.11.25 |