반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
def solution(triangle):
answer = triangle[0][0]
if len(triangle) == 1:
return answer
d = [[0] * (i + 1) for i in range(len(triangle))]
d[0][0] = triangle[0][0]
for i in range(1, len(triangle)):
for j in range(len(triangle[i])):
if j == 0: # 삼각형 i열 0번째
d[i][j] = d[i-1][j] + triangle[i][j];
elif j == i: # 삼각형 i열 마지막
d[i][j] = d[i-1][j-1] + triangle[i][j];
else:
d[i][j] = max(d[i-1][j-1], d[i-1][j]) + triangle[i][j];
answer = max(answer, d[i][j]);
return answer
** 추천 많이 받은 것 중에 제일 좋았던 풀이
def solution(triangle):
for t in range(1, len(triangle)):
for i in range(t+1):
if i == 0:
triangle[t][0] += triangle[t-1][0]
elif i == t:
triangle[t][-1] += triangle[t-1][-1]
else:
triangle[t][i] += max(triangle[t-1][i-1], triangle[t-1][i])
return max(triangle[-1])
방식은 똑같은데 1) 더 간결하고 2) 내 식보다 효율적이고 3) 이게 dp에 맞아서 가져옴
반응형
'프로그래머스 > level 3' 카테고리의 다른 글
[프로그래머스] 이중우선순위큐 (0) | 2022.06.23 |
---|---|
[프로그래머스] 베스트 앨범 (0) | 2022.05.20 |
[프로그래머스] 순위 (0) | 2022.04.21 |
[프로그래머스] 가장 먼 노드 (0) | 2022.04.21 |
[프로그래머스] 헤비 유저가 소유한 장소 (MySQL) (0) | 2021.08.10 |