문제
풀이과정
- 처음 시작하면 윗줄과 아랫줄을 더해서 각 column별로 최고값이 나올수 있도록 한다.
- 1번을 통해 나온 배열을 currArr(임시배열)에 담는다.
- currArr이랑 다시 다음줄을 각 column별로 최고값이 나올 수 있도록 더한다.
- 위 과정을 반복하면 결국 각 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)
}