본문 바로가기
알고리즘 문제/프로그래머스_Lv2 도장깨기

[프로그래머스] 땅따먹기 (Python)

by 스코필 2023. 12. 20.

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12913

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

땅따먹기 게임을 하려고 한다. 땅은 총 N행 4열인 2차원 배열로 이루어져 있으며,

1행부터 땅을 밟으며 항 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 한다.

단, 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없다.

마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 문제이다.

제한사항

  • 행의 개수 N : 100,000 이하의 자연수
  • 열의 개수는 4개이고, 땅은 2차원 배열로 주어집니다.
  • 점수 : 100 이하의 자연수

 

풀이

인덱스가 1인 행부터 시작해서, -1의 행의 최대값을 더하고 같은 열을 연속해서 밟을 수 없기 때문에 슬라이싱 하여 열을 제외한 최대값을 더하고, 마지막 행의 최대값을 구했다.

 

✅ Code - 성공

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