카테고리 없음

[프로그래머스][Lv2] - 땅따먹기(Python)

얄루몬 2021. 10. 19. 21:19

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

# 그리디로 풀려 했으나 조건 중에 같은 열은 다시 갈 수 없다는 조건을 보고 DP를 이용해서 풀었다.

# 앞의 행의 열을 0번째 1번째 2번째 3번째 선택 시 가장 큰 값을 구해주는 [0][0]번째면 [1][0]은 선택을 못하니 나머지 중 큰 값을 계속해서 더해준 뒤 마지막 행에서 가장 큰 값을 찾아 돌려주는 방식으로 풀었다. 

# DP 개념을 확실하게 이해하기 적합한 문제