https://programmers.co.kr/learn/courses/30/lessons/43105
코딩테스트 연습 - 정수 삼각형
[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30
programmers.co.kr
풀이
문제를 보았을때 알수있는 힌트
bfs나 dfs를 통해 백트래킹해서 문제를 푼다면 시간 초과가 날수 있는 문제이다.
triangle 과 같은 리스트의 dp를 만들고 이전의 값의 더하면서 최대값이 되는 값을 유지하며 진행하면 쉽게 풀리는 문제이다.
예를 들어 1행의 7을 2행의 3과 8에 넣어 2행 dp에 [10,15]를 가지게 한다.
다음으로 2행의에서 3행으로 갈수있는 방법으로 2행의 1번째는 3행의 1,2번째를 갈수있고[18,11] 2행의 2번째는 3행의 2,3번[16,15]을 갈수있다. 이때 2번째가 겹치는데 11,16중에 큰값인 16을 선택하게 한다. 총 3행의 dp는 [18,16,15]가 된다.
이렇게 마지막까지 반복하는 코드를 작성하고 마지막 행의 최대값을 result에 나오게 하면 끝이난다.
def solution(triangle):
dp = [[0]*(i+1) for i in range(len(triangle))]
dp[0][0] = triangle[0][0]
for i in range(len(triangle)):
for j in range(i):
temp=dp[i-1][j]
dp[i][j]=max(dp[i][j],temp+triangle[i][j])
dp[i][j+1]=max(dp[i][j+1],temp+triangle[i][j+1])
return max(dp[-1])
https://github.com/dydwkd486/coding_test/blob/main/programmers/정수%20삼각형.py
GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리
코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.
github.com
'Coding Test > programmers' 카테고리의 다른 글
[프로그래머스] 더 맵게- python (레벨 2) (0) | 2022.06.05 |
---|---|
[프로그래머스] 등굣길 - python (레벨 3) (0) | 2022.05.29 |
[프로그래머스] 가장 큰 정사각형 찾기 - python (레벨 2) (0) | 2022.05.13 |
[프로그래머스] 타겟 넘버 - python (레벨 2) (0) | 2022.04.10 |
[프로그래머스] 오픈채팅방 - python (레벨 2) (0) | 2022.04.04 |