본문 바로가기

코딩테스트/Python

[프로그래머스] 땅따먹기

내 코드

def solution(land):
    p = [[l for l in ld] for ld in land]
    
    for i in range(1,len(land)):
        for j in range(4):
            p[i][j] = max([p[i-1][k] for k in range(4) if k!=j]) + land[i][j]
    
    return max(p[-1])

이때까지 밟은 땅의 최대값을 구해서 풀었다. 지금 밟고있는 땅의 행의 -1된 땅들중에서 지금 밟고있는 땅의 열과 다른 땅들의 max를 구해 지금 밟고있는 땅의 수와 합친다. 

 

다른사람 코드

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

리스트 p를 따로 두지않고 풀었다. 비슷한데 중간에 같은 열을 빼는 방식이 좀 다르게 풀이되어있다! 이게 더 빠를거같다 ㅎㅎ