개발/algorithm
[프로그래머스][level2] 땅따먹기
zzi_on2
2022. 3. 30. 15:38
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12913
코딩테스트 연습 - 땅따먹기
땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟
programmers.co.kr
풀이
- dp 문제
1행은 다른 땅을 밟고 도착하지 않으므로 2행부터 시작
2행부터 전 행에서 자기 자신과 같은 열을 제외한 다른 열의 최댓값 더하기
계속 누적되어 마지막 행의 최댓값이 정답이 된다.
def solution(land):
n = len(land)
for i in range(1, n):
for j in range(4):
# i-1 행의 0열을 제외한 다른 열의 최댓값 더하기
if j == 0 :
land[i][j] += max(land[i-1][1:])
# i-1 행의 1열을 제외한 다른 열의 최댓값 더하기
if j == 1 :
land[i][j] += max(max(land[i-1][2:]),land[i-1][0])
# i-1 행의 2열을 제외한 다른 열의 최댓값 더하기
if j == 2 :
land[i][j] += max(max(land[i-1][:2]),land[i-1][3])
# i-1 행의 3열을 제외한 다른 열의 최댓값 더하기
if j == 3:
land[i][j] += max(land[i-1][:-1])
# 마지막 행의 최댓값
return max(land[-1])