[Programmers / Level 2] 12913. 땅따먹기 (Java)

이하얀·2025년 5월 25일
0

🕊️ 프로그래머스

목록 보기
116/124

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 땅(2차원 배열)에서 얻을 수 있는 점수의 최대값을 구하는 문제
    • 같은 열을 연속해서 밟을 수 없음


알고리즘


풀이 시간 : 23분

  • 첫 번째 행은 그대로 사용
  • 1번 행부터 마지막 행까지 반복하면서 갱신
    • land[i][j]
    • 이전 행의 동일 열을 제외한 값들 중 최대값 구하기
    • 최대값을 현재 위치 값에 더하기
  • 마지막 행에서 최댓값을 찾아 반환
class Solution {
    int solution(int[][] land) {
        for (int i = 1; i < land.length; i++) {
            for (int j = 0; j < 4; j++) {
                int max = 0;
                for (int k = 0; k < 4; k++) {
                    if (j != k) max = Math.max(max, land[i - 1][k]);
                }
                land[i][j] += max;
            }
        }
        int[] last = land[land.length - 1];
        return Math.max(Math.max(last[0], last[1]), Math.max(last[2], last[3]));
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, Data Science&BE 개발 기록 노트☘️

0개의 댓글