π‘ 쑰건
- νΈμμ μ€μ μ 0, μλ₯Ό 1, μΌμͺ½μ 2, μλλ₯Ό 3, μ€λ₯Έμͺ½μ 4λΌκ³ μ νμ.
- μ²μμ κ²μ΄λ¨Έλ λ λ°μ μ€μμ λͺ¨μΌκ³ μλ€.(κ·Έλ¦Όμμ 0μ μμΉ)
κ·Έλ¦¬κ³ κ²μμ΄ μμνλ©΄, μ§μμ λ°λΌ μΌμͺ½ λλ μ€λ₯Έμͺ½ λ°μ μμ§μΈλ€. νμ§λ§ κ·Έμ λ λ°μ΄ λμμ μμ§μ΄μ§λ μλλ€.
- λ λ°μ΄ κ°μ μ§μ μ μλ κ²μ΄ νλ½λμ§ μλλ€.
ν λ°μ΄ 1μ μμΉμ μκ³ , λ€λ₯Έ ν λ°μ΄ 3μ μμΉμ μμ λ, 3μ μ°μμΌλ‘ λλ¬μΌ νλ€λ©΄, 3μ μμΉμ μλ λ°λ‘ λ°λ³΅ν΄μΌ λλ¬μΌ νλ€.
- λ°μ μ΄λν λ νμ μ¬μ©νκ² λλ€.
- μ€μμ μλ λ°μ΄ λ€λ₯Έ μ§μ μΌλ‘ μμ§μΌ λ, 2μ νμ μ¬μ©νκ² λλ€.
- λ€λ₯Έ μ§μ μμ μΈμ ν μ§μ μΌλ‘ μμ§μΌ λλ 3μ νμ μ¬μ©νκ² λλ€.
- λ°λνΈμΌλ‘ μμ§μΌλλ 4μ νμ μ¬μ©νκ² λλ€.
- κ°μ μ§μ μ νλ² λ λλ₯Έλ€λ©΄, κ·Έλλ 1μ νμ μ¬μ©νκ² λλ€.
- μ
λ ₯μ μ§μ μ¬νμΌλ‘ μ΄λ£¨μ΄μ§λ€. κ°κ°μ μ§μ μ¬νμ νλμ μμ΄λ‘ μ΄λ£¨μ΄μ§λ€.
κ°κ°μ μμ΄μ 1, 2, 3, 4μ μ«μλ€λ‘ μ΄λ£¨μ΄μ§κ³ , μ΄ μ«μλ€μ κ°κ°μ λ°©ν₯μ λνλΈλ€.
μ
λ ₯ νμΌμ λ§μ§λ§μλ 0μ΄ μ
λ ₯λλ€. μ
λ ₯λλ μμ΄μ κΈΈμ΄λ 100,000μ λμ§ μλλ€.
- λ€μ΄λλ―Ήνλ‘κ·Έλλ° μ νμ λ¬Έμ
π₯ μμ€ μ½λ
import sys
sys.setrecursionlimit(10 ** 6)
def move(a, b):
if a == b:
return 1
elif a == 0:
return 2
elif abs(b - a) % 2 == 0:
return 4
else:
return 3
def solve(n, l, r):
global dp
if n >= len(arr) - 1:
return 0
if dp[n][l][r] != -1:
return dp[n][l][r]
dp[n][l][r] = min(solve(n + 1, arr[n], r) + move(l, arr[n]), solve(n + 1, l, arr[n]) + move(r, arr[n]))
return dp[n][l][r]
arr = list(map(int, sys.stdin.readline().split()))
dp = [[[-1] * 5 for _ in range(5)] for _ in range(100000)]
print(solve(0, 0, 0))
π μμ λ° μ€νκ²°κ³Ό
μμ
1 2 2 4 0
μ€νκ²°κ³Ό
8
β¨οΈ λ¬Έμ νμ΄
- λ¬Έμ λ₯Ό κ°λ¨νκ² λ§νμλ©΄, μ΅μνμ νμ μ¬μ©ν΄ μ
λ ₯λ°μ μμ΄μ λ²νΈλ₯Ό λ€ λλ¬μΌνλ€.
- λ€μ λ§ν΄, μΌμͺ½ λ°κ³Ό μ€λ₯Έμͺ½ λ°μ΄ μ΄λ μμΉμ μμ λ, μ΄λ€ λ°νλΆν° λ°μμΌ μ΅μμ νμ λ€μΌ μ μλκ°? μ΄λ€.
- κ·Έλ λ€λ©΄ μ΄ λ¬Έμ λ solve(n, l, r) μ΄λΌκ³ κ°λ¨νκ² ν¨μμ²λΌ λ§λ€μ΄ λ³Ό μκ° μλ€.
λ°μ μμΉκ° (l,r) μΌ λ nλ²μ§Έ ννλΆν° λ°μμ λ μλͺ¨λλ νμ΄λΌκ³ μ μν μ μλ€.
- λ°μ λμμ μμ§μΌ μ μμΌλ, λ°μ΄ μμ§μ΄λ 건 2κ°μ§κ° μλ€.
solve(n, l, r) μ μΌμͺ½ λ°μ μμ§μ¬ λ°νμ λ°μ μνμ μ€λ₯Έμͺ½ λ°μ μμ§μ¬ λ°νμ λ°μ μνμ μ΅μκ°μ΄ λ μ μλ€.
- κ·Έλ λ€λ©΄ μλμ κ°μ΄ μ μν μ μλ€.
min(solve(n + 1, arr[n], r) + move(l, arr[n]), solve(n + 1, l, arr[n]) + move(r, arr[n]))
πΎ λ°°μ΄μ
- λ©λͺ¨μ΄μ μ΄μ
κ³Ό μ¬κ·ν¨μλ₯Ό ν΅ν΄ κ²°κ³Όκ°μ λμΆνλ λ°©λ²