문제
풀이과정
연속으로 놓여있는 수는 지날수 없기 때문에 하나의 행에서 선택할 수 있는 수는 가장 큰 수, 두번째로 큰 수로 두가지밖에 없습니다.
그렇게 때문에 아래와 같은 방식으로 최댓값을 구할 수 있습니다.
1. 행에서 가장 큰수 maxNum, 두번째로 큰 수 secondMaxNum 를 구합니다.
2. n-1 행의 maxNum 의 인덱스를 maxIdx, secondMaxNum 의 인덱스를 secondMaxIdx 라고 할때,
n행에서 maxIdx 와 같은 위치에는 secondMaxNum을, 나머지에는 maxNum을 더합니다.
3. 1행부터 n 행까지 이 과정을 반복합니다.
4. 최종 maxNum 에 저장되어 있는 값이 최종 최댓값입니다.
Code
def solution(land):
temp = sorted(land[0])
maxNum = temp[-1]
secondMaxNum = temp[-2]
for idx in range(1, len(land)):
maxIdx = land[idx-1].index(maxNum)
for jdx in range(4):
if jdx == maxIdx:
land[idx][jdx] += secondMaxNum
else:
land[idx][jdx] += maxNum
temp = sorted(land[idx])
maxNum = temp[-1]
secondMaxNum = temp[-2]
return maxNum
반응형
'➰ 취업준비 > 알고리즘 문제풀이' 카테고리의 다른 글
[Python][프로그래머스] level 2 - 순위 검색 (딕셔너리, 이진탐색) (0) | 2021.12.28 |
---|---|
[Python][백준_1012] 유기농 배추 (BFS) (0) | 2021.12.20 |
[Python][백준_2493] 탑 (0) | 2021.12.20 |
[Python][프로그래머스] level 2 - 캐시 (0) | 2021.12.18 |
[Python][프로그래머스] level 2 - 프렌즈4블록 (0) | 2021.12.14 |