function solution(land) {
let val = Math.max(...land[0]);
let idx = land[0].indexOf(val);
let answer = val;
for (let i = 1; i < land.length; i++) {
let arr = land[i].filter((val, ind) => ind !== idx);
val = Math.max(...arr)
idx = arr.indexOf(val)
answer += val;
}
return answer;
}
위의 문제를 보고 이렇게 코드를 작성했는데 예시 테스트 케이스는 통과를 했으나 실제 코드를 실행해보면 다 실패가 뜨는게 아닌가?
각 배열의 최대값을 구해서 더해주면 2중 배열의 최대값이 되는줄 알았다. 근데 간과한 사실. 각 배열의 최대값이 아니더라도 중복된 인덱스값을 고려해서 값을 더하면 진짜 최대값을 구할 수 있었던 것.
function solution(land) {
for (let i = 1; i < land.length; i++) {
for (let j = 0; j < 4; j++) {
let maxPrev = Math.max(...land[i - 1].filter((_, idx) => idx !== j));
land[i][j] += maxPrev;
console.log('maxPrev', maxPrev)
console.log(`${j}번째`, land)
}
}
return Math.max(...land[land.length - 1]);
}
위의 코드는 어떻게 풀면 좋을지 생각이 도저히 나지않아 chapGPT한테 물어본 것.
원 배열land의 전 최대값의 인덱스와 동일하지 않고, 해당 배열에서의 최대값을 찾아서 다음 배열에 더해줬다. 그리고 마지막 배열에서 가장 최대값을 찾으면 그게 답이 되는 방법이었다.
난 왜 이런 방법을 생각하지 못할까..!