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 |
Tags
- k8s
- KAKAO
- Observer Pattern
- 알고리즘
- 피보나치
- Kotlin
- Python
- docker
- Top-down
- 파이썬
- easy
- Singleton Pattern
- BubbleSort
- kubernetes
- 백준
- java
- go
- LeetCode
- Backjoon
- GCP
- github
- golang
- Dynamic Programming
- cpu scheduling
- GKE
- Programmers
- mobaXTerm
- 그리디
- Codility
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 |