프로그래머스/Python
[프로그래머스] 땅따먹기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 8. 17. 12:23
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
해당 문제는 두번째 행부터 계산하여 연속으로 같은 칸을 제외하고 나머지 3칸의 값 중 가장 큰 값과 더하여 새로 저장하는 방식으로 이전의 결과에서 밟을 수 있는 칸 중 가장 큰 값을 가지고 있는 칸을 밟으면 된다.
- 두번째 행부터 이전의 결과를 참고할 수 있으므로 두번째 행부터 계산을 한다. 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])
- 마지막 행까지 계산을 했다면 마지막 행에서 최댓값이 정답이다. answer = max(land[-1])
반응형
3. 소스코드
def solution(land):
answer = 0
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])
answer = max(land[-1])
return answer
728x90
반응형