- js
- ν리μ¨λ³΄λ©
- λΉνΈλ§΅
- Union-Find
- νλ‘κ·Έλλ¨Έμ€
- LCs
- golang
- μΉ΄μΉ΄μ€ μ½ν
- νΈλ¦¬
- C++
- μΉ΄μΉ΄μ€2021
- μ¬κ·
- κ°μ₯κ°κΉμ΄κ³΅ν΅μ‘°μ
- Python
- go
- λ€μ΅μ€νΈλΌ
- μ¬λΌμ΄λ© μλμ°
- μ΄λΆνμ
- λμ νλ‘κ·Έλλ°
- DP
- μν°λ
- μμ½λ
- λ°±μλ ν리μ¨λ³΄λ©
- nestjs
- μΉλ¦°μ΄
- μκ³ λ¦¬μ¦
- λ°±μ€
- DFS
- BFS
- λΉνΈλ§μ€νΉ
- Today
- Total
Hello Ocean! πΌ
[λ°±μ€/Python] 7579. μ± λ³Έλ¬Έ
λ¬Έμ
https://www.acmicpc.net/problem/7579
μ°λ¦¬λ μ€λ§νΈν°μ μ¬μ©νλ©΄μ μ¬λ¬ κ°μ§ μ±(App)μ μ€ννκ² λλ€. λκ°μ κ²½μ° νλ©΄μ 보μ΄λ ‘μ€ν μ€’μΈ μ±μ νλλΏμ΄μ§λ§ 보μ΄μ§ μλ μνλ‘ λ§μ μ±μ΄ 'νμ±ν'λμ΄ μλ€. μ±λ€μ΄ νμ±ν λμ΄ μλ€λ κ²μ νλ©΄μ 보μ΄μ§ μλλΌλ λ©μΈ λ©λͺ¨λ¦¬μ μ§μ μ μνκ° κΈ°λ‘λμ΄ μλ κ²μ λ§νλ€. νμ¬ μ€ν μ€μ΄ μλλλΌλ μ΄λ κ² λ©λͺ¨λ¦¬μ λ¨κ²¨λλ μ΄μ λ μ¬μ©μκ° μ΄μ μ μ€ννλ μ±μ λ€μ λΆλ¬μ¬ λμ μ§μ μ μνλ₯Ό λ©μΈ λ©λͺ¨λ¦¬λ‘λΆν° μ½μ΄ λ€μ¬ μ€ν μ€λΉλ₯Ό λΉ λ₯΄κ² λ§μΉκΈ° μν΄μμ΄λ€.
νμ§λ§ μ€λ§νΈν°μ λ©λͺ¨λ¦¬λ μ νμ μ΄κΈ° λλ¬Έμ νλ²μ΄λΌλ μ€ννλ λͺ¨λ μ±μ νμ±νλ μ±λ‘ λ©μΈ λ©λͺ¨λ¦¬μ λ¨κ²¨λλ€ λ³΄λ©΄ λ©λͺ¨λ¦¬ λΆμ‘± μνκ° μ€κΈ° μ½λ€. μλ‘μ΄ μ±μ μ€νμν€κΈ° μν΄ νμν λ©λͺ¨λ¦¬κ° λΆμ‘±ν΄μ§λ©΄ μ€λ§νΈν°μ μ΄μ체μ λ νμ±ν λμ΄ μλ μ±λ€ μ€ λͺ κ°λ₯Ό μ ννμ¬ λ©λͺ¨λ¦¬λ‘λΆν° μμ νλ μλ°μ μλ€. μ΄λ¬ν κ³Όμ μ μ±μ ‘λΉνμ±ν’λΌκ³ νλ€.
λ©λͺ¨λ¦¬ λΆμ‘± μν©μμ νμ±ν λμ΄ μλ μ±λ€μ 무μμλ‘ νμν λ©λͺ¨λ¦¬λ§νΌ λΉνμ±ν νλ κ²μ μ’μ λ°©λ²μ΄ μλλ€. λΉνμ±νλ μ±λ€μ μ¬μ€νν κ²½μ° κ·Έλ§νΌ μκ°μ΄ λ νμνκΈ° λλ¬Έμ΄λ€. μ¬λ¬λΆμ μ΄λ¬ν μ±μ λΉνμ±ν λ¬Έμ λ₯Ό μ€λ§νΈνκ² ν΄κ²°νκΈ° μν νλ‘κ·Έλ¨μ μμ±ν΄μΌ νλ€
νμ¬ Nκ°μ μ±, A1, ..., ANμ΄ νμ±ν λμ΄ μλ€κ³ κ°μ νμ. μ΄λ€ μ± Aiλ κ°κ° mi λ°μ΄νΈλ§νΌμ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νκ³ μλ€. λν, μ± Aiλ₯Ό λΉνμ±νν νμ λ€μ μ€ννκ³ μ ν κ²½μ°, μΆκ°μ μΌλ‘ λ€μ΄κ°λ λΉμ©(μκ° λ±)μ μμΉν ν κ²μ ci λΌκ³ νμ. μ΄λ¬ν μν©μμ μ¬μ©μκ° μλ‘μ΄ μ± Bλ₯Ό μ€ννκ³ μ νμ¬, μΆκ°λ‘ M λ°μ΄νΈμ λ©λͺ¨λ¦¬κ° νμνλ€κ³ νμ. μ¦, νμ¬ νμ±ν λμ΄ μλ μ± A1, ..., AN μ€μμ λͺ κ°λ₯Ό λΉνμ±ν νμ¬ M λ°μ΄νΈ μ΄μμ λ©λͺ¨λ¦¬λ₯Ό μΆκ°λ‘ ν보ν΄μΌ νλ κ²μ΄λ€. μ¬λ¬λΆμ κ·Έ μ€μμ λΉνμ±ν νμ κ²½μ°μ λΉμ© ciμ ν©μ μ΅μννμ¬ νμν λ©λͺ¨λ¦¬ M λ°μ΄νΈλ₯Ό ν보νλ λ°©λ²μ μ°ΎμμΌ νλ€.
μ λ ₯
μ λ ₯μ 3μ€λ‘ μ΄λ£¨μ΄μ Έ μλ€. 첫 μ€μλ μ μ Nκ³Ό Mμ΄ κ³΅λ°±λ¬Έμλ‘ κ΅¬λΆλμ΄ μ£Όμ΄μ§λ©°, λμ§Έ μ€κ³Ό μ μ§Έ μ€μλ κ°κ° Nκ°μ μ μκ° κ³΅λ°±λ¬Έμλ‘ κ΅¬λΆλμ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€μ Nκ°μ μ μλ νμ¬ νμ±ν λμ΄ μλ μ± A1, ..., ANμ΄ μ¬μ© μ€μΈ λ©λͺ¨λ¦¬μ λ°μ΄νΈ μμΈ m1, ..., mNμ μλ―Ένλ©°, μ μ§Έ μ€μ μ μλ κ° μ±μ λΉνμ±ν νμ κ²½μ°μ λΉμ© c1, ..., cNμ μλ―Ένλ€
λ¨, 1 ≤ N ≤ 100, 1 ≤ M ≤ 10,000,000μ΄λ©°, 1 ≤ m1, ..., mN ≤ 10,000,000μ λ§μ‘±νλ€. λν, 0 ≤ c1, ..., cN ≤ 100μ΄κ³ , M ≤ m1 + m2 + ... + mNμ΄λ€.
μΆλ ₯
νμν λ©λͺ¨λ¦¬ M λ°μ΄νΈλ₯Ό ν보νκΈ° μν μ± λΉνμ±νμ μ΅μμ λΉμ©μ κ³μ°νμ¬ ν μ€μ μΆλ ₯ν΄μΌ νλ€.
νμ΄
DPλ°©μ μ€μμλ 'λ μ μκ³ λ¦¬μ¦'μ μ΄μ©νλ€.
μ΄μ μ μ 리ν λ μ μκ³ λ¦¬μ¦ ν¬μ€νΈ
2μ°¨μ cacheλ₯Ό ꡬμ±ν΄μ
cache[i][j] : 0~iκΉμ§μ μ±μμ jλ§νΌμ costλ‘ ν보 κ°λ₯ν μ΅λ λ©λͺ¨λ¦¬κ°
μ μ μ₯νλ€.
μ νμμ μ΄ν΄λ³΄μλ©΄,
iμ cost > j μ΄λ©΄, iλ²μ§Έ μ±μ μ’ λ£ν μ μκΈ° λλ¬Έμ, μ΄μ λ¨κ³ κ°μ κ·Έλλ‘ λ£μ΄μ€λ€.
cache[i][j] = cache[i-1][j]
iμ cost <= jμ΄λ©΄, iλ²μ§Έ μ±μ μ’ λ£ν μ μκΈ° λλ¬Έμ,
iλ²μ§Έ μ± μ’ λ£ + cache[i-1][j - (iμ cost)] vs cache[i-1][j] (iλ²μ§Έ μ± μ’ λ£μν¨) μ κ°μ λΉκ΅ν΄μ λ ν°κ°μ λ£μ΄μ£Όλ©΄ λλ€.
μΆκ°λ‘ λ§μ½ Mμ΄ 0μ΄λΌλ©΄, DPμκ³ λ¦¬μ¦μ κ±°μΉμ§ μκ³ λ°λ‘ 0μ printνκ³ μ’ λ£νλλ‘ νλ€.
μ½λ
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
memorys = list(map(int, input().split()))
costs = list(map(int, input().split()))
max_cost = sum(costs)
# [i][j] : 0~iλ²μ§Έ κΉμ§μ μ±μμ jμ costλ‘ ν보 κ°λ₯ν μ΅λ λ©λͺ¨λ¦¬κ°
cache = [[0 for i in range(max_cost+1)] for j in range(N)]
answer = max_cost
if M == 0: # Mμ΄ 0μ΄λ©΄ λ°λ‘ μ’
λ£
print(0)
exit()
for j in range(max_cost+1):
if costs[0] <= j:
cache[0][j] = memorys[0]
for i in range(1,N):
for j in range(max_cost+1):
if costs[i] > j:
cache[i][j] = cache[i-1][j]
else:
# iλ²μ§Έ μ± μ’
λ£ + i-1λ²μ§Έ μ±κΉμ§μμ j-iμ costλ‘ μ»μ μ μλ Mμ μ΅λκ°κ³Ό
# iλ²μ§Έ μ±μ λμ§ μκ³ i-1λ²μ§Έ μ± κΉμ§μμ jμ costλ‘ μ»μ μ μλ M μ΅λκ° λΉκ΅
cache[i][j] = max(memorys[i] + cache[i-1][j-costs[i]], cache[i-1][j])
if cache[i][j] >= M:
answer = min(answer, j)
print(answer)
κ²°κ³Ό
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/C++] 14906. μ€λ¬νΌ (0) | 2021.11.03 |
---|---|
[λ°±μ€/C++] 1013. Contact (0) | 2021.10.26 |
[λ°±μ€/Python] 20040. μ¬μ΄ν΄ κ²μ (0) | 2021.10.12 |
[CS/μκ³ λ¦¬μ¦] κ±°μ μ λ ¬λ Listμμ μ΄λ€ μ λ ¬μ΄ κ°μ₯ ν¨μ¨μ μΌκΉ? (0) | 2021.10.09 |
[CS/μλ£κ΅¬μ‘°] μ΄μ§ νμ νΈλ¦¬ (BST) (0) | 2021.10.09 |