본문 바로가기

프로그래머스

6/24[문제풀이] 프로그래머스 Lv2 땅따먹기

출처 : https://programmers.co.kr/learn/courses/30/lessons/12913

 

[문제풀이]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function solution(land) {
    let temp;
    let totalLen = land.length;
 
    let selectLen = land[0].length;
 
    for(let x = 1; x < totalLen; x++) {
        for(let y = 0; y < selectLen; y++) {
            temp = land[x-1].slice();
            temp[y] = 0;
            land[x][y] += Math.max.apply(null, temp);
        }
    }
    return Math.max.apply(null, land[land.length-1]);
}
cs

 

문제에서 언급했던 것 처럼 각 배열 중에서 가장 큰 수만 골라야하고 여기서 그 큰 수가 있었던 인덱스를 빼고 다음 배열에서도 가장 큰 수를 빼내어 계속 더해주는 식으로 코드를 구현했다. 변수로 받은 land 데이터를 수정하면서 가장 큰 수를 업데이트 하며 가장 마지막에 남게 되는 2차원 배열의 마지막 인덱스 값을 return 한다.