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

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

'코딩테스트' 카테고리의 다른 글

[프로그래머스] 비밀지도  (0) 2022.11.17
[프로그래머스] 푸드 파이트 대회  (2) 2022.11.15
[프로그래머스] 스킬트리  (1) 2022.09.18
[프로그래머스] 타겟넘버  (0) 2022.09.02
[프로그래머스] H-Index  (0) 2022.08.26