내 풀이 1차시도 실패
def solution(land_list):
answer = 0
index = -1
for land in land_list:
if index != land.index(max(land)):
answer += max(land)
else:
land.remove(max(land))
answer += max(land)
index = land.index(max(land))
return answer
- DP를 이용하는 문제이다.
- 맨 위에 행은 냅둬도 되어서 1부터 시작한다.
- 자신의 열은 제외하고 가장 큰 값을 구한다.
다른 사람 풀이
def solution(land):
for i in range(1,len(land)):
for j in range(len(land[0])):
land[i][j] += max(land[i-1][:j] + land[i-1][j+1:])
return max(land[len(land)-1])
코드는 land[i][j] + 그 위에 줄의 j열 빼고 만든 리스트에서 max값을 뽑아서 더해주라는 뜻이다. land[i-1][:j]를 하면 j열 앞까지 리스트가 뽑히고 land[i-1][j+1:]을 하면 j+1열부터 끝까지 리스트가 뽑혀서 리스트 끼리 더하면 합쳐진 리스트가 된다. 그 리스트에서 max 값을 더해주라는 뜻이다!!
다른 사람 풀이 2
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])
return max(land[-1])
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (0) | 2022.06.01 |
---|---|
[프로그래머스] 가장 큰 정사각형 (0) | 2022.06.01 |
[프로그래머스] 구명보트 (0) | 2022.05.31 |
[프로그래머스] [1차] 캐시 (0) | 2022.05.30 |
[프로그래머스] 다음 큰 숫자 (0) | 2022.05.25 |
[프로그래머스] 올바른 괄호 (0) | 2022.05.24 |
[프로그래머스] 숫자의 표현 (0) | 2022.05.24 |
[프로그래머스] 큰 수 만들기 (0) | 2022.05.24 |