์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - ๋์ ๊ณํ๋ฒ(Dynamic Programming)
<์ ์ ์ผ๊ฐํ>
๋ฌธ์ ์ค๋ช
์์ ๊ฐ์ ์ผ๊ฐํ์ ๊ผญ๋๊ธฐ์์ ๋ฐ๋ฅ๊น์ง ์ด์ด์ง๋ ๊ฒฝ๋ก ์ค,
๊ฑฐ์ณ๊ฐ ์ซ์์ ํฉ์ด ๊ฐ์ฅ ํฐ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์๋ณด๋ ค๊ณ ํฉ๋๋ค.
์๋ ์นธ์ผ๋ก ์ด๋ํ ๋๋ ๋๊ฐ์ ๋ฐฉํฅ์ผ๋ก ํ ์นธ ์ค๋ฅธ์ชฝ ๋๋ ์ผ์ชฝ์ผ๋ก๋ง ์ด๋ ๊ฐ๋ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด 3์์๋ ๊ทธ ์๋์นธ์ 8 ๋๋ 1๋ก๋ง ์ด๋์ด ๊ฐ๋ฅํฉ๋๋ค.
์ผ๊ฐํ์ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐฐ์ด triangle์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๊ฑฐ์ณ๊ฐ ์ซ์์ ์ต๋๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- ์ผ๊ฐํ์ ๋์ด๋ 1 ์ด์ 500 ์ดํ์ ๋๋ค.
- ์ผ๊ฐํ์ ์ด๋ฃจ๊ณ ์๋ ์ซ์๋ 0 ์ด์ 9,999 ์ดํ์ ์ ์์ ๋๋ค.
๋ฌธ์ ํ์ด
- my solution
def solution(triangle):
dp=[triangle[0]] #์ฒซ๋ฒ์งธ ์ค ๊ทธ๋๋ก
for i in range(len(triangle)-1):
temp=[]
for j in range(i+1):
if j>0: #์ผ์ชฝ ๋๊ฐ์
if temp[-1]<dp[i][j]+triangle[i+1][j]: #์์์ ๋ํ ๊ฐ ๋ณด๋ค ๋ ํฌ๋ฉด
temp[-1]=dp[i][j]+triangle[i+1][j] #์
๋ฐ์ดํธ
else: # ์ผ์ชฝ ๋๊ฐ์
temp.append(dp[i][j] + triangle[i + 1][j])
temp.append(dp[i][j]+triangle[i+1][j+1]) #์ค๋ฅธ์ชฝ ๋๊ฐ์
dp.append(temp)
return max(dp[-1]) #๋ง์ง๋ง ์ค์์ ์ต๋๊ฐ ์ถ๋ ฅ
์์ ์ ์ด์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ์ด๋ณธ ์ ์ด ์์ด ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ์๊ฐํด๋ผ ์ ์์๋ค.
dp๋ฅผ ํ์ฉํ๋ ๊ฒ์ด๋ค! ๋ฌผ๋ก ๋ฌธ์ ์ ๋ชฉ์์ '๋์ ๊ณํ๋ฒ'์ด๋ผ ๋์์์ด ๋น์ฐํ๋ค ์๊ฐํ ์ ์์ง๋ง
๋ฌธ์ ๋ฅผ ๋ณด๊ณ '์ dp๋ฅผ ํ์ฉํด์ผ๊ฒ ๋ค'๋ผ๊ณ ๋ ์ฌ๋๋จ ๋ง์ด๋ค!
- ์ฒซ ๋ฒ์งธ ์ค์ ๋ฐฐ์ด์ ๊ทธ๋๋ก ๋ฃ์ด์ค๋ค.
- ์ผ์ชฝ ๋๊ฐ์ , ์ค๋ฅธ์ชฝ ๋๊ฐ์ ๋ ์ค ํ๋๋ก๋ง ์ด๋์ด ๊ฐ๋ฅํ๋ฏ๋ก ๊ฒฝ์ฐ๋ฅผ ๋๋ ์ค๋ค
- ๋งจ ์ผ์ชฝ ๋๊ฐ์ ์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
- ์ค๋ฅธ์ชฝ ๋๊ฐ์ ๊ณผ ์ผ์ชฝ ๋๊ฐ์ ์ค ํฐ ๊ฐ์ผ๋ก ๋ฐฐ์ด์ ์ ๋ฐ์ดํธํด์ค๋ค.
- ๋ง์ง๋ง ์ค์์ ์ต๋๊ฐ์ ์ถ๋ ฅ
๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํ๋ฉด ๋ง๋ณด๋ค ์ฌ์ธ ๊ฒ ๊ฐ์ง๋ง ๋์ค์ ๋ด๊ฐ ๊ธ๋ง ๋ด๋ ์ดํดํ ์ ์์ ๊ฑฐ๋ผ ์๊ฐํ๋ค๐
์๊ฐ๐ค
์ด ๋ฌธ์ ๋ ๋ฐฑ์ค๊ณผ ํ๋ก๊ทธ๋๋จธ์ค์ ๋ ๋ค ์ถ์ ๋์ด์๋ค.
ํ๋ก๊ทธ๋๋จธ์ค์์๋ Level 3, ๋ฐฑ์ค์์๋ ์ค๋ฒ 1
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ป์ ๊ฒ
1. dp ํ์ฉ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] ํํ -2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ (0) | 2021.09.04 |
---|---|
[programmers] ์ด์ค์ฐ์ ์์ํ (0) | 2021.08.25 |
[programmers] ํ๊ฒ ๋๋ฒ (0) | 2021.04.04 |
[programmers] ์ ๊ท ์์ด๋ ์ถ์ฒ - 2021 KAKAO BLIND RECRUITMENT (0) | 2021.01.27 |
[programmers] [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.01.19 |