👨🏻‍💻알고리즘/프로그래머스

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

waveofmymind 2023. 1. 26. 15:52

코드

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

 

풀이

  • dfs로 풀려고 했으나 n의 길이가 100000개여서 누적합을 구하는 방식으로 접근했다.
  • 이전 배열의 최댓값을 더할때, 자기 자신의 위치를 뺀 리스트를 만드는 방법도 있다.(슬라이싱을 이용해서 land[i-1][0:j] + land[i-1][j+1:4] 로 구하면 된다.)