function solution(land) {
// 열,길이,깊은복사
const column = 4;
const temp = land.slice();
const tempLength = temp.length;
// 1,2,3,5 1,2,3,5 1,2,3,5
// 5,6,7,8 -> 10,11,12,11 -> 10,11,12,11
// 4,3,2,1 4,3,2,1 16,15,13,13
// 이전의 행을 더하는 방법으로 작성, 0번째의 이전은 없으므로 1부터 시작
for (let i = 1; i < tempLength; i++) {
for (let j = 0; j < column; j++) {
// 이중배열 반복문으로 각 행의 열 순회하며 이전 행의 최대값을 더해준다. 같은 열을 밟을수 없기때문에 필터를 사용해 같은 위치의 값을 제거
temp[i][j] += Math.max(...temp[i - 1].filter((_, index)=> j !== index));
}
}
// 반복문을 모두 순회하여 마지막 행에서 가장 큰 값을 리턴
return Math.max(...temp[tempLength-1]);
}
https://school.programmers.co.kr/learn/courses/30/lessons/12913#qna
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 비밀지도 (0) | 2022.11.17 |
---|---|
[프로그래머스] 푸드 파이트 대회 (2) | 2022.11.15 |
[프로그래머스] 스킬트리 (1) | 2022.09.18 |
[프로그래머스] 타겟넘버 (0) | 2022.09.02 |
[프로그래머스] H-Index (0) | 2022.08.26 |
Comment