[프로그래머스] 땅따먹기 (파이썬, javascript )

728x90
반응형

dp 문제

열이 연속으로 같지 않게 최대값 구하는 문제 

 

1. 파이썬

def solution(land):
    for i in range(1,len(land)):
        for j in range(4):
            land[i][j]+=max(land[i-1][:j]+land[i-1][j+1:])
    
    return max(land[len(land)-1])

 

2. javascript

 

function solution(land) {
    var answer = 0;
    let n=land.length;
    let dp=Array(n).fill(0).map(()=>Array(4).fill(0));

    for(let j=0;j<land[0].length;j++){
        dp[0][j]=land[0][j];
    }

    for(let i=1;i<land.length;i++){
        for(let j=0;j<4;j++){
            for(let k=0;k<4;k++ ){
                if(j==k)continue;
                dp[i][j]=Math.max(dp[i][j],dp[i-1][k]+land[i][j]);
            }
        }
    }

    for(let j=0;j<4;j++){
        answer=Math.max(answer,dp[land.length-1][j]);
    }

    return answer;
}
728x90
반응형
TAGS.

Comments