μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 | 31 |
- HAVIT
- μ΄μ§νμ
- λμ κ³νλ²
- Swift
- URLSession
- νλ‘κ·Έλλ¨Έμ€
- algoritm
- μ°μνμ€λΆλΆμμ΄μν©
- dfs
- APPJAM
- duno
- κΈ°μ΄λ¬Έλ²
- κ³ λμ kit
- GCD
- concurrency
- SQL
- Til
- binarySearch
- DynamicProgramming
- IOS
- algorithm
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- GroupBy
- SwiftUI νν 리μΌ
- BFS
- SOPT
- SwiftUI Tutorials
- discardableResult
- SwiftUI
- 0μ΄λμ΄μλκΈΈ
- Today
- Total
suvera-dev π₯¦
Algorithm) Dynamic Programming λ¬Έμ λ³Έλ¬Έ
1. 1λ‘ λ§λ€κΈ°
μ μ Xκ° μ£Όμ΄μ§ λ μ μXμ μ¬μ©ν μ μλ μ°μ°μ λ€μκ³Ό κ°μ΄ 4κ°μ§ μ΄λ€.
1) Xκ° 5λ‘ λλμ΄λ¨μ΄μ§λ©΄, 5λ‘ λλλ€.
2) Xκ° 3μΌλ‘ λλμ΄λ¨μ΄μ§λ©΄, 3μΌλ‘ λλλ€.
3) Xκ° 2λ‘ λλμ΄ λ¨μ΄μ§λ©΄, 2λ‘ λλλ€.
4) Xμμ 1μ λΊλ€.
μ μ Xκ° μ£Όμ΄μ‘μ λ, μ°μ° 4κ°λ₯Ό μ μ ν μ¬μ©ν΄μ 1μ λ§λ€λ €κ³ νλ€.
μ°μ°μ μ¬μ©νλ νμμ μ΅μκ°μ μΆλ ₯νμΈμ
λ¬Έμ νμ΄ λ΅μ
x = int(input())
# DP ν
μ΄λΈ μ΄κΈ°ν
d = [0] * 30001
# λ€μ΄λλ―Ή νλ‘κ·Έλλ° μ§ν - 보ν
μ
for i in range(2, x+1):
# νμ¬μ μμμ 1μ λΉΌλ κ²½μ°
d[i] = d[i-1] + 1
# νμ¬μ μκ° 2λ‘ λλμ΄ λ¨μ΄μ§λ κ²½μ°
if i % 2 == 0:
d[i] = min(d[i], d[i // 2] + 1)
# νμ¬μ μκ° 3μΌλ‘ λλμ΄ λ¨μ΄μ§λ κ²½μ°
if i % 3 == 0:
d[i] = min(d[i], d[i // 3] + 1)
# νμ¬μ μκ° 5λ‘ λλμ΄ λ¨μ΄μ§λ κ²½μ°
if i % 5 == 0:
d[i] = min(d[i], d[i // 5] + 1)
print(d[x])
2. κ°λ―Έ μ μ¬
κ°λ―Έμ μ¬λ λΆμ‘±ν μλμ μΆ©λΉνκ³ μ λ©λκΈ° λ§μμ μλμ°½κ³ λ₯Ό λͺ°λ 곡격νλ €κ³ νλ€.
λ©λκΈ° λ§μμλ μ¬λ¬ κ°μ μλμ°½κ³ κ° μλλ° μλμ°½κ³ λ μΌμ§μ μΌλ‘ μ΄μ΄μ Έ μλ€.
κ° μλ μ°½κ³ μλ μ ν΄μ§ μμ μλμ μ μ₯νκ³ μμΌλ©° κ°λ―Έ μ μ¬λ μλμ°½κ³ λ₯Ό μ νμ μΌλ‘ μ½ννμ¬
μλμ λΉΌμμ μμ . λ©λκΈ° μ μ°°λ³λ€μ μΌμ§μ μμ μ‘΄μ¬νλ μλμ°½κ³ μ€μμ μλ‘ μΈμ ν
μλμ°½κ³ κ° κ³΅κ²©λ°μΌλ©΄ λ°λ‘ μμμ±μ μλ€. κ°λ―Έ μ μ¬κ° μ μ°°λ³μκ² λ€ν€μ§ μκ³ μλμ°½κ³ λ₯Ό μ½ννκΈ°
μν΄μλ μ΅μν ν μΉΈ μ΄μ λ¨μ΄μ§ μλμ°½κ³ λ₯Ό μ½νν΄μΌλλ€.
1 / 3 / 1 / 5
λ€μκ³Ό κ°μ μλμ°½κ³ 4κ°κ° μλ€κ³ νλ©΄, κ°λ―Έμ μ¬λ λλ²μ§Έ μλ μ°½κ³ μ λ€λ²μ§Έ μ°½μλ₯Ό μ ννμ λ
μ΅λκ°μΈ μ΄ 8 κ°μ μλμ λΉΌμμ μ μλ€. μλμ°½κ³ Nκ°μ λν μ λ³΄κ° μ£Όμ΄μ‘μ λ
μ»μ μ μλ μλμ μ΅λκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€ !
λ¬Έμ ν΄κ²° μμ΄λμ΄
νΉμ ν iλ²μ§Έ μλμ°½κ³ μ λν΄μ νΈμ§ μνΈμ§ μ μ¬λΆλ₯Ό κ²°μ ν λ, 2κ°μ§λ§ νμΈ
i-1 λ²μ§Έλ₯Ό νΈλ©΄ i λ²μ§Έλ μλ¨
i-2 λ²μ§Έλ₯Ό νΈλ©΄ i λ²μ§Έ κ°λ₯
λ κ°μ§ κ²½μ°μ€ λ λ§μ μλμ νΈμμλ λ°©λ²μ μ ν
iλ²μ§Έ μλμ°½κ³ μ λν μ΅μ μ ν΄λ₯Ό ꡬν λ μΌμͺ½λΆν° i-3λ²μ§Έ μ΄νμ μλμ°½κ³ μ λν
μ΅μ μ ν΄μ λν΄μλ κ³ λ €ν νμκ° μλ€.
d[i-3]μ d [i-1]κ³Ό d[i-2]λ₯Ό ꡬνλ κ³Όμ μμ μ΄λ―Έ κ³μ°λμκΈ° λλ¬Έ
n = int(input())
# μλ μ 보 μ
λ ₯λ°κΈ°
array = list(map(int, input().split()))
# μμ κ³μ°λ κ²°κ³Όλ₯Ό μ μ₯νκΈ° μν dp ν
μ΄λΈ μ΄κΈ°ν !
d = [0] * 100
# λ€μ΄λλ―Ή νλ‘κ·Έλλ° λ³΄ν
μ
λ°©μ
d[0] = array[0]
d[1] = max(array[0], array[1])
for i in range(2, n):
d[i] = max(d[i-1], d[i-2] + array[i])
print(d[n-1])
'Algorithm > CodingTest - Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Algorithm) Dynamic programming (0) | 2022.04.09 |
---|---|
Algorithm ) Binary Search λ¬Έμ (0) | 2022.04.07 |
Algorithm) Binary Search (0) | 2022.04.07 |
Algorithm) Sorting κΈ°λ³Έλ¬Έμ (0) | 2022.04.07 |
Algorithm) Sorting (0) | 2022.04.03 |