(Python, Java) 프로그래머스 - 땅따먹기
in Algorithm on Programmers, Level2
[문제 링크]
Python 풀이
def solution(land):
for i in range(1, len(land)):
for j in range(4):
land[i][j] = max(land[i - 1][: j] + land[i - 1][j + 1:]) + land[i][j]
return max(land[-1])
Java 풀이
class Solution {
int solution(int[][] land) {
int length = land.length;
for (int x = 1; x < length; x++) {
for (int y = 0; y < 4; y++) {
int temp = 0;
for (int k = 0; k < 4; k++) {
if (k != y) {
temp = Math.max(temp, land[x - 1][k]);
}
}
land[x][y] += temp;
}
}
return Arrays.stream(land[length - 1]).max().getAsInt();
}
}