코딩테스트 연습 - 땅따먹기 | 프로그래머스 스쿨 (programmers.co.kr)
나의 풀이
.
모범 답안
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])
배열에서의 최댓값을 더해 최고점을 구해야 하는데 여기에 같은 열을 제외한다는 조건이 있는 문제이다.
같은 열을 제외해야 하므로 max 함수를 이용해서 최댓값의 인덱스를 찾고 다음 행의 최댓값의 인덱스와 비교하여 찾아야 하는지 고민하였지만, 무조건 첫 번째 행의 최댓값을 선택하여 그 열을 기준으로 구한 값이 최고점이 아닐 수 있기 때문에 접근이 어려웠던 문제이다.
찾은 정답 코드에서는 특정 열의 값을 제외한 리스트에서의 최댓값을 구해 다음 행에 더하여 값을 쌓아가며 최고점을 구하였다. 조건이 복잡해 보이는 문제일수록 다양한 풀이 방법을 생각해보는 것이 중요한 것 같다.
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 다리를 지나는 트럭 / python (0) | 2024.02.24 |
---|---|
Programmers / 2단계 / [3차] 압축 / python / 2018 KAKAO BLIND RECRUITMENT (0) | 2024.02.23 |
Programmers / 2단계 / 뒤에 있는 큰 수 찾기 / python (0) | 2024.02.21 |
Programmers / 2단계 / [스택/큐] 주식가격 / python (0) | 2024.02.20 |
Programmers / 3단계 / [DFS/BFS] 네트워크 / python (0) | 2024.02.19 |