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

나의 풀이

def solution(land):
    answer, idx, column_size = 0, 0, 4
    is_eaten = [False] * column_size
    for line in land:
        max_num = -1
        for i in range(column_size):
            if is_eaten[i] is False:
                max_num = max(max_num, line[i])
            else:
                continue
        max_idx = line.index(max_num)
        is_eaten = [True if i is max_idx else False for i in range(column_size)]
        answer += max_num

    return answer
  • 실패한 나의 풀이
  • is_eaten 불린 리스트를 두어서 인덱스가 최대값이면서 True가 아닌 인덱스의 값을 더해주는 식으로 진행하였다.
  • 입력값을 다르게주어 확인해 봤지만 결과값은 다 똑같이 나와서 정답인 줄 알았는데 아니였다.🙉

다른 사람 풀이 & 느낀점

def solution(land):
     for i in range(1, len(land)):
         land[i][0] += max(max(land[i - 1][1], land[i - 1][2]), land[i - 1][3])
         land[i][1] += max(max(land[i - 1][0], land[i - 1][2]), land[i - 1][3])
         land[i][2] += max(max(land[i - 1][1], land[i - 1][0]), land[i - 1][3])
         land[i][3] += max(max(land[i - 1][1], land[i - 1][2]), land[i - 1][0])

    return max(land[-1])
  • DP로 접근하는 풀이가 있었다.
  • 예전에 자바로 풀었을 때도 못풀어서 이 와 비슷한 방법을 참고했는데 그사이에 까먹었다.🙉

0개의 댓글