문제
그리디를 활용하여 해결하면, 시간 초과가 발생하는 문제입니다.
따라서, dp를 활용하여 최적의 결과가 보장되도록 구현해주어야 합니다.
Python
def solution(land):
for i in range(1,len(land)):
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])
return max(land[len(land)-1])
문제 조건 중 연속된 열을 지나갈 수 없으므로, 각 열에서 윗 열을 제외하고 최댓값이 구해지도록 위와 같이 구현해줍니다.
마지막 행에서 최댓값을 구해주어야 하므로, max(land[len(land)-1])과 같이 구현해 줍니다.
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] 2022 KAKAO TECH INTERNSHIP 두 큐 합 같게 만들기 - Python (0) | 2023.05.30 |
|---|---|
| [프로그래머스] 큰 수 만들기 - Python (0) | 2023.03.29 |
| [프로그래머스] 2xn 타일링 - Python (0) | 2023.01.16 |
| [프로그래머스] 최솟값 만들기 - Python (0) | 2023.01.16 |
| [프로그래머스] 귤 고르기 - Python (0) | 2022.12.28 |