티스토리 뷰

728x90

문제

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

 

코딩테스트 연습 - 땅따먹기

땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟

programmers.co.kr

 

풀이 및 소스코드

dp를 사용해 풀었다.

dp[0]에는 land[0]을 넣어주고 그 밑 부터는 dp[i][j] = max(dp[i-1][j]+land[i][j], dp[i][j]) 를 통해 비교해가며 최고점을 만들어간다.

def solution(land):
    answer = 0
    dp = [[0 for _ in range(len(land[0]))] for _ in range(len(land))]
    for i in range(len(land)):
        for j in range(len(land[0])):
            if i == 0:
                dp[i][j] = land[i][j]
                continue
            else:
                for k in range(len(land[0])):
                    if j == k:
                        continue
                    dp[i][j] = max(dp[i][j], dp[i-1][k]+land[i][j])
    answer = max(dp[-1])
    return answer
반응형