[프로그래머스] 코딩테스트 연습 - 61

level 2 - 땅따먹기

땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다.
마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요.

입출력 예시
land : [[1,2,3,5],[5,6,7,8],[4,3,2,1]]
-> 16

function solution(land) {
    var answer = 0;
    var pre = -1;
    for(var i=1; i<land.length; i++) {
        for(var j=0; j<4; j++) {
            var [max, idx] = find_max(land[i - 1], j);
            land[i][j] += max;
            pre = idx;
        }
    }
    function find_max(arr, rem) {
        var max = 0;
        var idx = -1;
        for(var i=0; i<arr.length; i++) {
            if (i == rem) continue;
            if (max < arr[i]) {
                max = arr[i];
                idx = i;
            }
        }
        return [max, idx]
    }
    return Math.max(...land[land.length - 1]);
}

좋은 웹페이지 즐겨찾기