Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- mobaXTerm
- kubernetes
- easy
- github
- BubbleSort
- golang
- go
- 파이썬
- Python
- Programmers
- k8s
- Observer Pattern
- 그리디
- Codility
- Singleton Pattern
- cpu scheduling
- Kotlin
- Top-down
- 백준
- Dynamic Programming
- 피보나치
- Backjoon
- GKE
- java
- 알고리즘
- docker
- GCP
- LeetCode
- KAKAO
Archives
- Today
- Total
To Be Developer
[Programmers] 정수 삼각형 (Python, Dynamic programmi) 본문
https://programmers.co.kr/learn/courses/30/lessons/43105
[Python 풀이]
def solution(triangle):
answer = 0
triSize = len(triangle) # 삼각형 배열의 사이즈
dp = [[0 for j in range(i+1)] for i in range(triSize)] # 각 경로의 최대 값을 저장해놓을 배열
dp[0][0] = triangle[0][0] # 높이가 1 일 때는 경우의 수가 1개뿐
if triSize == 1: # 높이가ㅏ 1 일 때는 계산을 마쳤으므로 바로 return
return dp[0][0]
for i in range(1, triSize): # 1부터 삼각형 배열의 사이즈 만큼 반복
dp[i][0] = dp[i-1][0] + triangle[i][0] # 맨 앞의 경로는 한 가지 경우의 수 밖에 존재하지 않음
dp[i][i] = dp[i-1][i-1] + triangle[i][i] # 맨 뒤도 마찮가지로 한가지 경우의 수 만 존재
for j in range(1, i):
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j] # 각 경로의 최대 값은 자기 자신의 값과 이전 층의 2가지 경우 중 max 값임
return max(dp[-1]) # dp 배열의 맨 마지막 값 중 max 값을 return
triangle = [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]]
sl = solution(triangle)
print(sl)
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 전화번호 목록 Python (0) | 2019.03.26 |
---|---|
[Programmers] 완주하지 못한 선수 Python Code (0) | 2019.03.14 |