프로그래머스 - 땅따먹기

황준승·2021년 4월 16일
0
post-thumbnail
post-custom-banner

문제 링크 : 프로그래머스 - 땅따먹기

원래 풀이

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])

동적계획법의 풀이를 이용한 것을 비슷하였지만 숏코딩면에서 차이가 보였다. 앞으로 밑의 풀이를 통해 시험 시간을 더욱 줄이는 데 힘써야겠다.

profile
다른 사람들이 이해하기 쉽게 기록하고 공유하자!!
post-custom-banner

0개의 댓글