문제 설명은 아래 링크를 통해서
https://programmers.co.kr/learn/courses/30/lessons/12913
코딩테스트 연습 - 땅따먹기
땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟
programmers.co.kr
풀이방법
n번째 행에 있는 4가지 점수들 입장에서 생각해보자
(15)점수가 선택될 경우는 1번행의 1,3,4번째 점수를 밟고 넘어온 경우다.
다른 점수들도 마찬가지로 이전 점수들 중에서 자신의 열을 제외한 나머지 점수들 중에서 가장 큰 점수를 가진 점수를 선택하면 자신이 선택된 경우의 수에서 가장 큰 점수를 얻을 수 있게 되는 것이다.
이전 행이 만약 여태 건너온 점수들의 합산을 나타낸다면 제일 마지막 행의 점수는 자신이 선택된 경우 가장 큰 점수를 나타내게 된다.
두번째 행은 첫번째 행에서 자신 열에 위치한 점수를 제외한 나머지 점수 중에서 가장 큰 값을 선택하여 자신과 더한다.
이렇게 행이 누적되는 식으로 점수를 더하고 마지막 행에서 가장 큰 값을 선택하면 정답이 된다.
def solution(land):
for i in range(1,len(land)):
for j in range(len(land[i])):
land[i][j]+=max(land[i-1][:j]+land[i-1][j+1:])
#확인용
for i in land:
print(i)
return max(land[-1])
느낀점
1.나 설명 진짜 못한다.......
2.다른 사람 코드를 봤는데 놀랄만큼 똑같더라....
BFS, DFS등 알고는 있지만 코테를 위해 각잡고 공부하지 않아서 오히려 단순히 문제 접근을 하다보니 답을 찾았다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
메뉴 리뉴얼 (코딩테스트, 프로그래머스) (0) | 2022.01.19 |
---|---|
타겟 넘버 (코딩테스트, 프로그래머스) (0) | 2022.01.19 |
코딩테스트 문제 : 거리두기 확인하기 (프로그래머스) (0) | 2022.01.13 |
피로도 파이썬(프로그래머스) (0) | 2022.01.05 |
삼각 달팽이-파이썬 (프로그래머스) (0) | 2021.12.30 |
댓글