|
์ฝ๋ ์์ฑํ๊ธฐ
def solution(triangle):
dp = triangle
dp[0][0] = triangle[0][0]
for i in range(len(triangle)):
for j in range(i+1):
if j == 0:
a = 0
else:
a = triangle[i-1][j-1]
if j == i:
b = 0
else:
b = triangle[i - 1][j]
val = max(a, b)
dp[i][j] = triangle[i][j] + val
return max(dp[len(triangle)-1])
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
โข
์ฒ์์๋ ํฐ ์๋ง ๋ฐ๋ผ๊ฐ๋๋ฐ ๋ฌธ์ ์์๋ ์ธ์ ํ ์๋ก๋ง ์ด๋์ด ๊ฐ๋ฅํ๋ค๋ ์กฐ๊ฑด์ด ์์๋ค.
โข
๋ง๋ฅ ํฐ ์๋ง ์ซ๋ ๊ฒ์ ๊ทธ๋ฆฌ๋๋ก ๊ทธ ๋ค์์ค์ ๋ ํฐ ์๊ฐ ๋์ค๋ฉด ํ๋ฆฐ ํ์ด๋ฒ์ด ๋๋ค.
โข
๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ triangle๊ณผ ๊ฐ์ ๋ฐฐ์ด์ ์ต๋ํฉ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
์์์ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ ์ ์ค์ ํฐ ์์ ํ์ฌ ์์น๋ฅผ ๋ํด์ dp์ ์ ์ฅํ์๋ค.
์์ชฝ ๋์ ์๋ ์๋ ๋น๊ตํ ์๊ฐ ํ๋๋ง ์์ผ๋ฏ๋ก ์ด์ ๋ง๋ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์๋ค.
์ด๋ฌํ ์ฒ๋ฆฌ๋ฅผ ์ํ๊ธฐ ์ํด์๋ ์๋์ฒ๋ผ ๋ฐ์์ ์ฌ๋ผ๊ฐ๋ ๋ฐฉ๋ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
def solution(triangle):
height = len(triangle)
while height > 1:
for i in range(height - 1):
triangle[height-2][i] += max([triangle[height-1][i], triangle[height-1][i+1]])
height -= 1
answer = triangle[0][0]
return answer
Python
๋ณต์ฌ