Chapter10. ๋์ ํ๋ก๊ทธ๋๋ฐ
[๋ฌธ์ 40] ์ ์ ์ผ๊ฐํ - Level3
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
์์ ๊ฐ์ ์ผ๊ฐํ์ ๊ผญ๋๊ธฐ์์ ๋ฐ๋ฅ๊น์ง ์ด์ด์ง๋ ๊ฒฝ๋ก ์ค, ๊ฑฐ์ณ๊ฐ ์ซ์์ ํฉ์ ๊ฐ์ฅ ํฐ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์๋ณด๋ ค๊ณ ํฉ๋๋ค. ์๋ ์นธ์ผ๋ก ์ด๋ํ ๋๋ ๋๊ฐ์ ๋ฐฉํฅ์ผ๋ก ํ ์นธ ์ค๋ฅธ์ชฝ ๋๋ ์ผ์ชฝ์ผ๋ก๋ง ์ด๋ ๊ฐ๋ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด 3์์๋ ๊ทธ ์๋์นธ์ 8 ๋๋ 1๋ก๋ง ์ด๋ ๊ฐ๋ฅ
์ผ๊ฐํ์ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐฐ์ด triangle์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฑฐ์ณ๊ฐ ์ซ์์ ์ต๋๊ฐ์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
[์ ํ์ฌํญ]
- ์ผ๊ฐํ์ ๋์ด๋ 1 ์ด์ 500 ์ดํ
- ์ผ๊ฐํ์ ์ด๋ฃจ๊ณ ์๋ ์ซ์๋ 0 ์ด์ฌ 9,999 ์ดํ์ ์ ์
[์ฝ๋์์ฑ]
- ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ ์์ ๋ฐฐ์ด ์์ฑ
def solution(triangle):
dp = [[0, *t, 0] for t in triangle]
- ๋งจ ๊ผญ๋๊ธฐ๋ถํฐ ์์ํด ํ๋์ฉ ๋ด๋ ค๊ฐ๋ฉด์ ๊ณ์ฐ
for i in range(1, len(triangle)):
for j in range(1, i+2):
dp[i][j] += max(dp[i-1][j-1], dp[i-1][j])
- ๊ฒฐ๊ณผ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํ
return max(dp[-1])
[์ ์ฒด์ฝ๋]
def solution(triangle):
dp = [[0, *t, 0] for t in triangle]
for i in range(1, len(triangle)):
for j in range(1, i+2):
dp[i][j] += max(dp[i-1][j-1], dp[i-1][j])
return max(dp[-1])
[๋ค๋ฅธ ๋ฌธ์ ํ์ด]
def solution(triangle):
height = len(triangle) - 1
- ๋งจ ์๋๋ถํฐ ์์ํด ํ๋์ฉ ์ฌ๋ผ๊ฐ๋ฉด์ ๊ณ์ฐ
while height > 0:
for i in range(height):
triangle[height-1][i] += max([triangle[height][i], triangle[height][i+1]])
height -= 1
- ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํ
return triangle[0][0]
[์ ์ฒด์ฝ๋2]
def solution(triangle):
height = len(triangle) - 1
while height > 0:
for i in range(height):
triangle[height-1][i] += max([triangle[height][i], triangle[height][i+1]])
height -= 1
return triangle[0][0]