모바일 개발하는 자바리안의 메모장

자바(JAVA) - 땅따먹기(Programmers : 12913) 본문

Java/Java.algorithm

자바(JAVA) - 땅따먹기(Programmers : 12913)

자바리안 2021. 6. 10. 19:34
반응형

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

 

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

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

programmers.co.kr

DP(동적 계획법)을 이용하여 풀 수 있었던 문제.
처음엔 정렬 문제일거라 생각했으나,,

각 행의 열이 다른 값들 중, 가장 큰 값을 다음 행에 더해나가며 정답을 구할 수 있었다.

 

실행 순서는 다음과 같다 :

    1. input 첫번째 행부터 마지막 행까지 확인하며,

    2. 다음 행의 c열에 현재 c 행이 아닌 3개의 값 중, 가장 큰 값을 더해줌

    3. 마지막 행에서 가장 큰 값 반환

 

 

<코드>

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