프로그래머스 - 땅따먹기

front_pica·2021년 4월 29일
0
post-thumbnail

문제

풀이과정

  1. 처음 시작하면 윗줄과 아랫줄을 더해서 각 column별로 최고값이 나올수 있도록 한다.
  2. 1번을 통해 나온 배열을 currArr(임시배열)에 담는다.
  3. currArr이랑 다시 다음줄을 각 column별로 최고값이 나올 수 있도록 더한다.
  4. 위 과정을 반복하면 결국 각 column별로 최고점이 나오므로 여기서 max값을 구하면 된다.

코드

function solution(land) {
    let tempArr = [0,0,0,0];  //최종 결과값을 담는 배열
    let currArr = []; //for문을 돌며 나오는 각 최고값 덧셈 배열을 담는 임시배열

    for(let i = 0; i < land.length - 1; i++) {
        for(let j = 0; j < 4; j++) {
            const pick = (i === 0) ? land[i][j] : currArr[j];
            //console.log(pick);
            for(let k = 0; k < 4; k++) {  
            
            	//만약 같은 열에 위치한다면
                if(k === j) {
                    if(tempArr[k] < land[i+1][k]) {
                        tempArr[k] = land[i+1][k];
                    }
                } else {
                    if (tempArr[k] < (pick + land[i+1][k])) {
                        tempArr[k] = pick + land[i+1][k];
                    } 
                }             
            }

        }
        currArr = [...tempArr];
    }



    return Math.max(...tempArr)
}
profile
한걸음씩

0개의 댓글