원래 풀이
def solution(land):
n = len(land)
for i in range(1,n):
land[i][0] += max(land[i-1][1],land[i-1][2],land[i-1][3])
land[i][1] += max(land[i-1][0],land[i-1][2],land[i-1][3])
land[i][2] += max(land[i-1][0],land[i-1][1],land[i-1][3])
land[i][3] += max(land[i-1][0],land[i-1][1],land[i-1][2])
answer = max(land[-1])
return answer
다른 사람의 풀이
# 프로그래머스
# 카카오 2019 블라인드 채용 출제 문제 Level - 2
# 땅따먹기
#예제 입력
land = [[1,2,3,5],[5,6,7,8],[4,3,2,1]]
def solution(land):
for i in range(1, len(land)):
for j in range(len(land[0])):
# 동적계획법과 메모이제이션을 통해서 해당 위치에서 올 수 있는 최대값을 계산해 보았다.
land[i][j] = max(land[i -1][: j] + land[i - 1][j + 1:]) + land[i][j]
return max(land[-1])
동적계획법의 풀이를 이용한 것을 비슷하였지만 숏코딩면에서 차이가 보였다. 앞으로 밑의 풀이를 통해 시험 시간을 더욱 줄이는 데 힘써야겠다.