문제링크: 정수 삼각형
✍🏻 Information
| content | |
|---|---|
| 언어 | python |
| 난이도 | ⭐️⭐️⭐️ |
| 풀이시간 | 70분 |
| 제출횟수 | ∞ |
| 인터넷검색유무 | yes |
🍒 My Code
SUM = {}
def findsum(x,y,triangle):
if x==0:
return triangle[0][0]
if (x,y) not in SUM:
tmp = 0
if y-1>=0:
tmp = max(tmp,findsum(x-1,y-1,triangle)+triangle[x][y])
if y<len(triangle[x-1]):
tmp = max(tmp,findsum(x-1,y,triangle)+triangle[x][y])
SUM[(x,y)] = tmp
return SUM[(x,y)]
def solution(triangle):
answer=[]
for i in range(len(triangle[-1])):
answer.append(findsum(len(triangle[-1])-1,i,triangle))
return(max(answer))
💡 What I learned
SUM = {}
def findsum(x,y,triangle):
if x==0:
return [triangle[0][0]]
if (x,y) not in SUM:
tmp = []
if y-1>=0:
tmp.extend([i+triangle[x][y] for i in findsum(x-1,y-1,triangle)])
if y<len(triangle[x-1]):
tmp.extend([i+triangle[x][y] for i in findsum(x-1,y,triangle)])
SUM[(x,y)] = tmp
return SUM[(x,y)]
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])