프로그래머스 - 땅따먹기

이서현·2021년 8월 5일
0

Algorithm

목록 보기
65/76
post-thumbnail

08.05에 푼 문제입니다🌷
땅따먹기

계속 고민하다가 정확도가 56% 나서 다른 분의 풀이방법을 참고해서
코드를 짰다ㅜㅜ

풀이법

위의 행의 열과 동일한 열이면 안되므로 위의 행을 보면서 진행해야 한다.

  1. 1행은 건너뛰고 2행부터 시작해야한다.
  2. 위의 행에서 자신의 열을 뺀 나머지 3개 중 가장 큰 값을 구해서 자신에게 더한다.
  3. 하나의 행에 있는 모든 열을 동일하게 진행해준다.
  4. 마지막 행이 되었을때 마지막 행도 마찬가지로 진행하고
  5. 그 중 가장 큰 값이 정답이 된다.

음 예시로 들자면

1 | 2 | 3 | 5
5 | 6 | 7 | 8
4 | 3 | 2 | 1

2행의 [5,6,7,8]을 모두 돌 것이다.

2행의 1열이니 1행의 1열을 뺀 [2,3,5] 중 가장 큰 값을 구한다.
가장 큰 값은 1행의 4열인 5이다.
2행의 1열에 가장 큰 값을 더해준다.

모든 값에 이런 방식을 적용하면 된다!

코드

function solution(land) {
    var answer = [];
    
    for(let i=1;i<land.length;i++){
        for(let j=0;j<4;j++){
            let exland = land[i-1].slice()
            exland[j]=-100
            let max = Math.max(...exland)
            land[i][j]+=max
        }
    }
    
    return Math.max(...land[land.length-1]);
}
profile
안녕하세요. 이서현입니다( ღ'ᴗ'ღ )

0개의 댓글