public class Solution {
// 땅따먹기
public static int solution(int[][] land) {
int answer = 0;
int[][] sumArr = new int[land.length][land[0].length];
sumArr = land;
for (int i = 1; i < land.length; i++) { // 행
for (int j = 0; j < 4; j++) { // 열
int max = sumArr[i][j]; // 비교 대상 행의 열 값을 max로 지정
for (int z = 0; z < 4; z++) { // 비교 열
if (j == z) { // 같은 행에선 비교x
continue;
}
if (max < sumArr[i - 1][z] + land[i][j]) {
max = sumArr[i - 1][z] + land[i][j]; // 더 큰 값이 존재한다면 max값 변경
}
}
sumArr[i][j] = max; // 비교가 끝났다면 이번 행, 이번 열이 가질 수 있는 최대값 갱신
}
}
// for (int i = 0; i < land.length; i++) {
//
// for (int j = 0; j < 4; j++) {
// System.out.print(sumArr[i][j] + " ");
// }
// System.out.println();
// }
int sumMax = sumArr[sumArr.length - 1][0];
for (int i = 1; i < 4; i++) {
if (sumMax < sumArr[sumArr.length - 1][i]) {
sumMax = sumArr[sumArr.length - 1][i];
}
}
answer = sumMax;
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] land = {{1,2,3,5},{5,6,7,8},{4,3,2,1}};
System.out.println(solution(land)); // 16
}
}
프로그래머스 땅따먹기 문제 풀이 Java
'Java > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 [Level-4] 도둑질 (0) | 2022.11.27 |
---|---|
[Java] 프로그래머스 [Level-4] [3차]파괴되지 않은 건물 (0) | 2022.11.27 |
[Java] 프로그래머스 [Level-2] 주차 요금 계산 (0) | 2022.11.27 |
[Java] 프로그래머스 [Level-3] 등대 (0) | 2022.11.27 |
[Java] 프로그래머스 [Level-1] 이상한 문자 만들기 (0) | 2022.11.25 |