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

 

코딩테스트 연습 - 땅따먹기

땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟

programmers.co.kr

 

 

문제 분석

- dp를 활용하여 문제를 푼다. 각 행에 직전 행에서 본인의 열을 제외한 나머지 3개 중 가장 큰 값을 더하여 계산한다.

- 마지막 행에서 가장 큰 변수를 구하여 정답을 반환한다.

 

 

문제 풀이

1. for문을 통해서 직전 행에서 가장 큰 수를 더하여 처리한다.

2. 마지막 행의 배열을 정렬하여 가장 큰 변수를 반환한다.

import java.util.*;

class Solution {
    int solution(int[][] land) {
        int answer = 0;
        
        for(int i=1;i<land.length;i++){
            land[i][0] += Math.max(Math.max(land[i-1][1], land[i-1][2]), land[i-1][3]);
            land[i][1] += Math.max(Math.max(land[i-1][0], land[i-1][2]), land[i-1][3]);
            land[i][2] += Math.max(Math.max(land[i-1][0], land[i-1][1]), land[i-1][3]);
            land[i][3] += Math.max(Math.max(land[i-1][0], land[i-1][1]), land[i-1][2]);
        }
        
        Arrays.sort(land[land.length-1]);
        answer = land[land.length-1][3];
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm

'Algorithm > programmers' 카테고리의 다른 글

programmers 숫자의 표현  (0) 2022.05.04
programmers 최댓값과 최솟값  (1) 2022.05.03
programmers 최솟값 만들기  (0) 2022.05.03
programmers 피보나치 수  (0) 2022.05.01
programmers 행렬의 곱셈  (0) 2022.05.01