초등학교때 했던 길찾기 문제를 활용한 dp문제였다.
신나서 dp설계하고 점화식 세웠는데

,,, 쨋든 내가 생각한 방법은 다음과 같다.

# 입력
n, m, k= map(int, input().split())
# dp 설계
dp = [
[0] * (m + 1) for _ in range(n + 1)
]
# 초기값 설정
dp[1][1] = 1
# k == 0인 경우
if k == 0:
for i in range(2, m + 1):
dp[1][i] = 1
for j in range(2, n + 1):
dp[j][1] = 1
for i in range(2, n + 1):
for j in range(2, m + 1):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
print(dp[n][m])
# k != 0 인 경우
else:
# k 좌표 찾기
p = k // m + 1
q = k % m
# 첫 번째 dp
for i in range(2, p + 1):
dp[i][1] = 1
for j in range(2, q + 1):
dp[1][j] = 1
for i in range(2, p + 1):
for j in range(2, q + 1):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
# 두 번째 dp
for i in range(p + 1, n + 1):
dp[i][q] = dp[p][q]
for j in range(q + 1, m + 1):
dp[p][j] = dp[p][q]
for i in range(p + 1, n + 1):
for j in range(q + 1, m + 1):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
print(dp[n][m])
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
| [백준_11726] 2×n 타일링 python (0) | 2022.06.28 |
|---|---|
| [백준_2688] 줄어들지 않아 python (0) | 2022.06.27 |
| [백준_11052] 카드 구매하기 python (0) | 2022.06.25 |
| [백준_2502] 떡 먹는 호랑이 python (0) | 2022.06.23 |
| [백준_17271] 리그 오브 레전설 (Small) python (0) | 2022.06.22 |