βοΈ λ¬Έμ
[λ°±μ€/BOJ] 9655λ²: λ κ²μ(https://www.acmicpc.net/problem/9655)
λ κ²μμ λ λͺ μ΄μ μ¦κΈ°λ μ¬λ°λ κ²μμ΄λ€.
νμ μμ λ Nκ°κ° μλ€. μκ·Όμ΄μ μ°½μμ΄λ ν΄μ λ²κ°μκ°λ©΄μ λμ κ°μ Έκ°λ©°, λμ 1κ° λλ 3κ° κ°μ Έκ° μ μλ€. λ§μ§λ§ λμ κ°μ Έκ°λ μ¬λμ΄ κ²μμ μ΄κΈ°κ² λλ€.
λ μ¬λμ΄ μλ²½νκ² κ²μμ νμ λ, μ΄κΈ°λ μ¬λμ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. κ²μμ μκ·Όμ΄κ° λ¨Όμ μμνλ€.
π€ μ μΆλ ₯ μμ
π§ λμ΄λ/μμ μκ°
β λμ΄λ: solved.ac κΈ°μ€ S5
β μμ μκ°: 5λΆ
β κΆμ₯ μκ°: 1μκ° 15λΆ
π‘ νμ΄
1) λ¬Έμ μ΄ν΄
λ¬Έμ λ₯Ό 보μλ§μ λ°°μ€ν¨λΌλΉμ€ 31 κ²μμ΄ μκ°λ¬λ€. μ κ²μμ νμΉ κ·μΉμ΄ μλ κ²μ²λΌ μ΄ λ¬Έμ λ λΆλͺ ν μκ·Όμ΄κ° 무쑰건 μ΄κΈ°κ±°λ μ§λ κ·μΉμ΄ μμ κ±°λΌκ³ μκ°νλ€.
λλ μνμ μΈ λ°©λ²(μ΄λΌκ³ νκΈ°μλ λ무 κ°λ¨νκΈ΄ νμ§λ§)μΌλ‘ νμ΄μ λ§μλλ° λ¬Έμ λΆλ₯μ 'λ€μ΄λλ―Ή νλ‘κ·Έλλ°'μ΄ μκΈΈλ DPλ‘λ νμ΄λ³΄μλ€.
2-1) μν - μμ΄λμ΄ νλ¦ λ° μνμ μ¦λͺ
β Nμ΄ νμμΌ λ
λ¬Έμ μμ ν λ²μ κ°μ§κ³ κ° μ μλ λμ 1κ° μλλ©΄ 3κ°λΌκ³ νκΈ° λλ¬Έμ μ 체 λ κ°μκ° 1κ°μ΄κ±°λ 3κ°μ΄λ©΄ 무쑰건 μκ·Όμ΄κ° μ΄κΈ°κ² λλ€.
μ¬κΈ°μ κ°μ μ’ λ νμ₯μν€λ©΄μ λ κ°μκ° νμμΈ κ²½μ°λ₯Ό λ°μ Έλ΄€λ€.
N = 5 → μκ·Ό 1, μ°½μ 1, μκ·Ό 3(μΉ) / μκ·Ό 1, μ°½μ 3, μκ·Ό 1(μΉ) / μκ·Ό 3, μ°½μ 1, μκ·Ό 1(μΉ)
N = 7 → μκ·Ό 1, μ°½μ 1, μκ·Ό 1, μ°½μ 1, μκ·Ό 3(μΉ) / μκ·Ό 1, μ°½μ 1, μκ·Ό 3, μ°½μ 1, μκ·Ό 1(μΉ) / ...
Nμ΄ νμλ©΄ μ΄λ»κ² ν΄λ μκ·Όμ΄κ° μ΄κΈ°κ² λλ κ²μ μ μ μλ€.
β‘ Nμ΄ μ§μμΌ λ
Nμ΄ 2μΌ λ μκ·Ό 1, μ°½μ 1λ‘ μ°½μμ΄κ° μ΄κΈ°κ² λλ€.
β μμμ λμΌνκ² Nμ΄ 2 μ΄κ³Ό μ§μμΈ κ²½μ°μ λν΄ νμΈν΄λ³΄μ.
N = 4 → μκ·Ό 1, μ°½μ 1, μκ·Ό 1, μ°½μ 1(ν¨) / μκ·Ό 1, μ°½μ 3(ν¨) / μκ·Ό 3, μ°½μ 1(ν¨)
Nμ΄ 6μΌ λλ μ μ§ μμλ μ°½μμ΄κ° μ΄κΈ°λ κ² λͺ λ°±νλ€.
β’ μνμ μ¦λͺ
μμ μ κ·Ό λ°©μμ 'μ΄λ κ² νλκΉ λλλΌ' μμ κ°κΉμ΄ κ² κ°μ μ±μ§νΌν°μ λμμ λ°μ μνμ μΌλ‘ μ΄λ»κ² μ¦λͺ ν μ μλμ§ νμΈν΄λ΄€λ€.
< κ·λ©λ² μ μ© >
κ°μ€: Nμ΄ νμλ©΄ μκ·Όμ΄κ° μ΄κΈ°κ³ μ§μλ©΄ μ°½μμ΄κ° μ΄κΈ΄λ€.
- κ·λ© κ°μ (N=kμΌ λ)
- kκ° νμλ©΄ μκ·Όμ΄κ° μ΄κΈ΄λ€.
- kκ° μ§μλ©΄ μ°½μμ΄κ° μ΄κΈ΄λ€.
- κ·λ© μ¦λͺ
(N=k+1μΌ λ)
- k+1μ΄ νμλ©΄?
- μκ·Όμ΄κ° 1κ°λ₯Ό κ°μ Έκ° κ²½μ° N=kκ° λκ³ kλ μ§μ → μ°½μμ΄λ νμ νμ κ°μ λ(k-1 λλ k-3)μ μκ·Όμ΄μκ² λκΈ°κ² λλ€.
- μκ·Όμ΄κ° 3κ°λ₯Ό κ°μ Έκ° κ²½μ° N=k-2κ° λκ³ k+1μ΄ νμκΈ° λλ¬Έμ k-2λ μ§μ → μ΄ κ²½μ°μλ μ°½μμ΄λ νμ νμ κ°μ λ(k-3 λλ k-5)λ₯Ό μκ·Όμ΄μκ² λκΈ°κ² λλ€.
- νμ κ°μ λμ΄ λ¨μ μνμμ μκ·Όμ΄μ ν΄μ΄ λμμ€λ©΄ μκ·Όμ΄λ νμ κ°λ₯Ό μ λΆ κ°μ§κ³ μ€λ©΄ λκΈ° λλ¬Έμ 무쑰건 μ΄κΈ°κ² λλ€.
- k+1μ΄ μ§μλ©΄?
- k+1μ΄ νμμΈ κ²½μ°μ λμΌν λ‘μ§μΌλ‘ λμν΄ μ°½μμ΄κ° 무쑰건 μ΄κΈ°κ² λλ€.
- k+1μ΄ νμλ©΄?
2-2) μν - μ 체 μ½λ
N = int(input())
if N%2 != 0:
print("SK")
else:
print("CY")
3-1) DP - μμ΄λμ΄ νλ¦ λ° μ½λ
β DP ν μ΄λΈ μ μ λ° μ΄κΈ°κ° μ±μ°κΈ°
κ°μΈμ μΌλ‘ DP μ νμ ν λ κ°μ₯ μ€μν λΆλΆμ DP ν μ΄λΈμ μ μνλ κ²μ΄λΌκ³ μκ°νλ€. DP ν μ΄λΈμ μ μ ν κ°μΌλ‘ μ±μΈ μ μμ΄μΌ μ΄κ±Έ νμ©ν΄μ λ¬Έμ λ₯Ό ν μ μκΈ° λλ¬Έμ..! νμ§λ§ μ΄ λ¬Έμ λ μ€λͺ λ κ΅μ₯ν μ§§κ³ , DPλ₯Ό μ°μ§ μμλ ν μ μλ λ°©λ²μ΄ μμ΄μ κ·Έλ°κ° DP ν μ΄λΈμ μ΄λ»κ² ꡬμ±ν΄μΌ ν μ§ λλ¬΄μ§ κ°μ΄ μ€μ§ μμλ€.
λ°±μ€ μ§λ¬Έ κ²μνμ λλ¬λ³΄λλ° 'μ΄ λ¬Έμ κ° μ DPμΈμ§ λͺ¨λ₯΄κ² λ€'λ μ μ κ° λͺ λΆ μμκ³ ννΈλ₯Ό μ£Όλ λΆμ΄ μμ΄μ κ·Έ λ΄μ©μ μ°Έκ³ νλ€.
1κ° μ΄μ kκ° μ΄νμ λμ κ°μ Έκ°λ κ²μμ΄ μλ€κ³ ν λ,
μΌλ°μ μΌλ‘ κ²μ μ΄λ‘ μμμ DP ν μ΄λΈμ μλμ κ°μ΄ μ μν μ μλ€.
DP[i] = iλ²μ§Έ λμ΄ λ¨μμ λ, μ 곡 νλ μ΄μ΄κ° μΉλ¦¬ν μ μλκ°?
μΆμ²: https://www.acmicpc.net/board/view/151649
dp = [0]*1001
# dp[i]: λμ΄ iκ° λ¨μ μμ λ μκ·Όμ΄κ° μ΄κΈΈ μ μλμ§ μ²΄ν¬
dp[1], dp[2], dp[3] = True, False, True
μ λ΄μ©μ΄ κ΅μ₯ν ν° ννΈμκΈ° λλ¬Έμ μ κ±Έ λ°νμΌλ‘ booleanνμ DP ν μ΄λΈμ μ μνλ€.
β‘ μ νμ μ λ
for i in range(4, 1001):
if not dp[i-1] or not dp[i-3]:
dp[i] = True
- if not dp[i-1] or not dp[i-3]
- λμ΄ iκ° λ¨μμ λ μκ·Όμ΄κ° μ΄κΈ°λ €λ©΄ λμ΄ i-1κ° λ¨μμ λλ i-3κ° λ¨μμ λ μκ·Όμ΄κ° μ΄κΈΈ μ μλ μν©μ΄λ©΄ λλ€.
- i=5λΌκ³ κ°μ
- λμ΄ 4κ°(i-1) λ¨μμ λλ λμ΄ 2κ°(i-3) λ¨μμ λ λ§μ§λ§ λμ μ°½μμ΄κ° κ°μ Έκ°λ©΄ i=5μΌ λ μκ·Όμ΄λ 무쑰건 μ΄κΈΈ μ μλ€.
3-2) DP - μ 체 μ½λ
N = int(input())
dp = [0]*1001
# dp[i]: λμ΄ iκ° λ¨μ μμ λ μκ·Όμ΄κ° μ΄κΈΈ μ μλμ§ μ²΄ν¬
dp[1], dp[2], dp[3] = True, False, True
for i in range(4, 1001):
if not dp[i-1] or not dp[i-3]:
dp[i] = True
if dp[N]:
print("SK")
else:
print("CY")
4) μ΄λ €μ λ μ /λ°°μ΄ μ
π¨ μ΄λ €μ λ μ
- λ¬Έμ λ κΈλ°© νμμ§λ§ DPλ₯Ό μ΄λ»κ² μ μ©ν μ μμμ§ μκ°ν΄λ΄λ κ² μ΄λ €μ λ€.
β λ°°μ΄ μ
- DP ν μ΄λΈμ κ°μ΄ 무쑰건 μ«μμΌ νμκ° μλ€. μν©μ λ§κ² μ μ ν μ€μ νλ©΄ λλλ° μ΄κ±΄ μ°μ΅μ λ§μ΄ ν΄λ΄μΌ λ°λ‘ μΊμΉν μ μμ κ² κ°λ€.
'Problem Solving > [νν΄99] TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
99ν΄λ½ μ½ν μ€ν°λ 28μΌμ°¨ TIL / DP(λ€μ΄λλ―Ή νλ‘κ·Έλλ°) (0) | 2024.11.24 |
---|---|
99ν΄λ½ μ½ν μ€ν°λ 27μΌμ°¨ TIL / DP(λ€μ΄λλ―Ή νλ‘κ·Έλλ°) (0) | 2024.11.23 |
99ν΄λ½ μ½ν μ€ν°λ 25μΌμ°¨ TIL / μμ νμ (0) | 2024.11.21 |
99ν΄λ½ μ½ν μ€ν°λ 24μΌμ°¨ TIL / μμ νμ (0) | 2024.11.20 |
99ν΄λ½ μ½ν μ€ν°λ 23μΌμ°¨ TIL / μμ νμ (0) | 2024.11.19 |