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
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 방문 길이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.21 |
---|---|
[프로그래머스] 게임 맵 최단거리 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.20 |
[프로그래머스] 스킬트리 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.19 |
[프로그래머스] 주식가격 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.18 |
[프로그래머스] 로또의 최고 순위와 최저 순위 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.16 |
[프로그래머스] 단어 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.15 |
[프로그래머스] 주차 요금 계산 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.14 |
[프로그래머스] 오픈채팅방 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.13 |