[프로그래머스] 땅따먹기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로 접근하는 풀이가 있었다.
- 예전에 자바로 풀었을 때도 못풀어서 이 와 비슷한 방법을 참고했는데 그사이에 까먹었다.🙉