π€λ¬Έμ ν΄κ²°
S1 | λ€μ΄λλ―Ήνλ‘κ·Έλλ°
μ΅μκ°μ€μΉ? λΌκ³ μκ°ν΄μ λ³ μκ°μμ΄ λ€μ΅μ€νΈλΌλ‘ νμλλ λ°λ‘ μκ°μ΄κ³Ό
λ€μ μ½μ΄λ³΄λ κ²½λ‘κ° κ° μ§μ λ§λ€ λ¨μν΄μ λ€μ΄λλ―Ήνλ‘κ·Έλλ°μΌλ‘ νΈλ λ¬Έμ μλ€.
λ¬Έμ μμ μ£Όμ΄μ§ μΌκ°κ·Έλνμ λκ°μ ν¬κΈ°μ 2μ°¨μ리μ€νΈλ₯Ό λ§λ λ€.
리μ€νΈμ κ° μμλ i,jμ λλ¬ ν λμ κ°μ₯ μ΅μκ°μ μ μ₯νλ€.
μ΄μ dp κ°μ μ μ₯νλ λ°©λ²μ μ€λͺ νλ©΄ λ¨Όμ 1νκΉμ§λ μ§μ κ°μ μ±μ λ£κ³ , λλ¨Έμ§λ forλ¬Έμ λλ¦°λ€.
- (1,0): (0,1)μμ μ€λ κ°
- (1,1): (0,1), (1,0)μμ μ€λ κ°
- (1,2): (0,1), (1,1), (0,1)+(0,2) μμ μ€λ κ°
μ¬κΈ°μ μ€μν건 λ ΈλμμΌλ‘ νμν μ λΆλΆμ΄λ€.
λ¬Έμ μμ κ° λ Έλμ κ°μ€μΉλ μ μμ΄λ€. λ€μ λ§ν΄μ μμκ° ν¬ν¨λμ΄ μλ€λ λ».(μ λΆλΆ λλ¬Έμ νμ°Έ ν΄λ§Έλ€)
7 -> 6 μ΄ 7 -> 5 -> 6 λ³΄λ€ λΉμ°ν μλ€
νμ§λ§ 5κ° λ§μ½ -5λΌλ©΄
6 -> -6 λ³΄λ€ 7 -> -5 -> 6μ΄ λ μλ€. κ·Έλ¬λ―λ‘ μ΄λ κ² λμμ κ°λ κ²½λ‘λ κ³μ°ν΄μ€μΌ νλ€.
π¨ tip! λ¬Έμ μμ λ Έλμ κ°μ΄ μ μλΌλ μ
π»μμ€ μ½λ
import sys
def solution(n, graph):
dp = [[0] * 3 for _ in range(n)]
dp[1][0] = graph[1][0] + graph[0][1]
dp[1][1] = graph[1][1] + min(dp[1][0], graph[0][1], graph[0][2]+graph[0][1])
dp[1][2] = graph[1][2] + min(dp[1][1], graph[0][1], graph[0][1] + graph[0][2])
for i in range(2, n):
for j in range(3):
if j == 0:
min_value = min(dp[i - 1][j], dp[i - 1][j + 1])
elif j == 1:
min_value = min(dp[i - 1][j - 1], dp[i - 1][j], dp[i - 1][j + 1], dp[i][j - 1])
else:
min_value = min(dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1])
dp[i][j] = min_value + graph[i][j]
print(f'{tc}. {dp[-1][1]}')
if __name__ == "__main__":
tc = 0
while True:
a = int(input())
if a == 0:
break
b = [list(map(int, sys.stdin.readline().split())) for _ in range(a)]
tc += 1
solution(a, b)
πλ¬Έμ νμΈ
μΆμ²: BACKJOON ONLINE JUDGE
λ§ν¬: https://www.acmicpc.net/problem/4883
λ¬Έμ
μ΄ λ¬Έμ λ μΌκ° κ·Έλνμ κ°μ₯ μμͺ½ κ°μ΄λ° μ μ μμ κ°μ₯ μλμͺ½ κ°μ΄λ° μ μ μΌλ‘ κ°λ μ΅λ¨ κ²½λ‘λ₯Ό μ°Ύλ λ¬Έμ μ΄λ€.
μΌκ° κ·Έλνλ μ¬μ΄ν΄μ΄ μλ κ·Έλνλ‘ N ≥ 2 κ°μ νκ³Ό 3μ΄λ‘ μ΄λ£¨μ΄μ Έ μλ€. μΌκ° κ·Έλνλ λ³΄ν΅ κ·Έλνμ λ€λ₯΄κ² κ°μ μ΄ μλ μ μ μ λΉμ©μ΄ μλ€. μ΄λ€ κ²½λ‘μ λΉμ©μ κ·Έ κ²½λ‘μμ μ§λκ° μ μ μ λΉμ©μ ν©μ΄λ€.
μ€λ₯Έμͺ½ κ·Έλ¦Όμ N = 4μΈ μΌκ° κ·Έλνμ΄κ³ , κ°μ₯ μμͺ½ κ°μ΄λ° μ μ μμ κ°μ₯ μλμͺ½ κ°μ΄λ° μ μ μΌλ‘ κ²½λ‘ μ€ μλλ‘λ§ κ°λ κ²½λ‘μ λΉμ©μ 7+13+3+6 = 29κ° λλ€. μΌκ° κ·Έλνμ κ°μ μ νμ μ€λ₯Έμͺ½ κ·Έλ¦Όκ³Ό κ°μ ννλ‘ μ°κ²°λμ΄ μλ€.
μ λ ₯
μ λ ₯μ μ¬λ¬ κ°μ ν μ€νΈ μΌμ΄μ€λ‘ μ΄λ£¨μ΄μ Έ μλ€. κ° ν μ€νΈ μΌμ΄μ€μ 첫째 μ€μλ κ·Έλνμ νμ κ°μ Nμ΄ μ£Όμ΄μ§λ€. (2 ≤ N ≤ 100,000) λ€μ Nκ° μ€μλ κ·Έλνμ iλ²μ§Έ νμ μλ μ μ μ λΉμ©μ΄ μμλλ‘ μ£Όμ΄μ§λ€. λΉμ©μ μ μμ΄λ©°, λΉμ©μ μ κ³±μ 1,000,000λ³΄λ€ μλ€.
μ λ ₯μ λ§μ§λ§ μ€μλ 0μ΄ νλ μ£Όμ΄μ§λ€.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€μ λν΄μ, κ°μ₯ μμͺ½ κ°μ΄λ° μ μ μμ κ°μ₯ μλμͺ½ κ°μ΄λ° μ μ μΌλ‘ κ°λ μ΅μ λΉμ©μ ν μ€νΈ μΌμ΄μ€ λ²νΈμ μλμ κ°μ νμμΌλ‘ μΆλ ₯νλ€.
k. n
kλ ν μ€νΈ μΌμ΄μ€ λ²νΈ, nμ μ΅μ λΉμ©μ΄λ€.
'Algorithm Problem > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[python] λ°±μ€ - 11497. ν΅λ무 (0) | 2020.09.21 |
---|---|
[python] λ°±μ€ - 2410. 2μ λ©±μμ ν© (0) | 2020.09.21 |
[python] λ°±μ€ - 13335. νΈλ (0) | 2020.09.20 |
[python] λ°±μ€ - 2617. κ΅¬μ¬ μ°ΎκΈ° (0) | 2020.09.19 |
[python] SWEA - 6019. κΈ°μ°¨ μ¬μ΄μ ν리 (2) | 2020.09.18 |