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

제리·2021년 1월 11일
0

프로그래머스

목록 보기
18/25

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

let height, width

function getMaxScore(dp,row,exceptColummn){
    if(row == height) return 0
    return Math.max(...dp[row].filter((num,i)=>i != exceptColummn))
}

function solution(land) {
    var answer = 0;
    
    height = land.length
    width = land[0].length
    
    const dp = Array.from(Array(height), ()=>Array(width).fill(0))
    
    for(let i = height-1; i >= 0; i--){
        for(let j = 0; j < width; j++){
            dp[i][j] = land[i][j] + getMaxScore(dp,i+1,j)
        }
    }
    
    answer = Math.max(...dp[0])

    return answer;
}

오랜만에 dp문제를 풀어서 재밌었다.
풀이방법은 맨 아랫행부터 자신 다음행에 자신과 같은 열을 제외한 값중에 가장 큰 값을 골라서 더하여 저장해둔다 이를 위로 쭈욱 반복한다.
자바스크립트는 내장함수는 알고리즘 풀 때 정말 도움이 많이되서 좋다!!

profile
흐릿한 잉크가 뚜렷한 기억보다 낫다

0개의 댓글