๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]๋•…๋”ฐ๋จน๊ธฐ

by syLim___ 2023. 6. 10.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12913

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


def solution(land):

    n = len(land)
    
    dp = [[0 for j in range(4)] for i in range(n)]
    
    for i in range(4):
        dp[0][i] = land[0][i]
    for i in range(1, n):
        dp[i][0] = land[i][0] + max(dp[i-1][1], dp[i-1][2], dp[i-1][3])
        dp[i][1] = land[i][1] + max(dp[i-1][0], dp[i-1][2], dp[i-1][3]) 
        dp[i][2] = land[i][2] + max(dp[i-1][0], dp[i-1][1], dp[i-1][3]) 
        dp[i][3] = land[i][3] + max(dp[i-1][0], dp[i-1][1], dp[i-1][2]) 
    
    return max(dp[n-1])

์ผ๋‹จ ์ด๋ ‡๊ฒŒ ์ œ์ถœํ–ˆ๋Š”๋ฐ

for๋ฌธ ๋‚ด๋ถ€์— ํ•˜๋“œ์ฝ”๋”ฉํ•œ ์ ์ด ๋„ˆ๋ฌด ๋งˆ์Œ์— ๊ฑธ๋ ธ๋‹ค.

 

 

๋‹ค๋ฅธ ๋ถ„๋“ค ํ’€์ด๋ฅผ ๋ณด๋‹ˆ๊นŒ ์ด๋ ‡๊ฒŒ ํ’€๋ฉด ๋˜๋Š” ๊ฑฐ์˜€๋‹ค.

๋ณด๊ณ  ๋ฐฐ์›Œ์•ผ๊ฒ ๋”ฐ. ์ด๋Ÿฌ๋ ค๊ณ  ํŒŒ์ด์ฌ ํ•˜๋Š” ๊ฑฐ์ง€

 land[i][j] = land[i][j] + max(land[i-1][:j]+land[i-1][j+1:])

 

728x90