알고리즘 풀이/프로그래머스

[Level 2] 땅따먹기

mhko411 2021. 2. 22. 21:48
728x90

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

 

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

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

programmers.co.kr


접근

백준의 RGB거리와 같은 유형의 문제였다.

그 이유는 0행부터 내려오면서 땅을 밟고 연속해서 같은 행의 땅은 밟을 수 없다고 했을 때 가장 아래의 행에 내려왔을 때 최대값을 구하는 것이기 때문이다.

따라서 1행부터 이전의 행에서 밟을 수 있는 땅 중 최대를 찾아 더해가면서 밑으로 내려가도록 한다.

 

구현

def solution(land):
    answer = 0
    for y in range(1, len(land)):
        land[y][0] += max(land[y-1][1], max(land[y-1][2], land[y-1][3]))
        land[y][1] += max(land[y-1][0], max(land[y-1][2], land[y-1][3]))
        land[y][2] += max(land[y-1][0], max(land[y-1][1], land[y-1][3]))
        land[y][3] += max(land[y-1][0], max(land[y-1][1], land[y-1][2]))
    
    N = len(land)-1
    answer = max(land[N][0], max(land[N][1], max(land[N][2], land[N][3])))      

    return answer

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 2] 카펫  (0) 2021.02.23
[Level 2] 네트워크  (0) 2021.02.22
[Level 2] 올바른 괄호  (0) 2021.02.21
[Level 2] 더 맵게  (0) 2021.02.21
[Level 2] 가장 큰 수  (0) 2021.02.20