[C++/λ°±μ€] 1149 : RGB 거리
λ¬Έμ
RGB거리μλ μ§μ΄ Nκ° μλ€. 거리λ μ λΆμΌλ‘ λνλΌ μ μκ³ , 1λ² μ§λΆν° Nλ² μ§μ΄ μμλλ‘ μλ€.
μ§μ λΉ¨κ°, μ΄λ‘, νλ μ€ νλμ μμΌλ‘ μΉ ν΄μΌ νλ€. κ°κ°μ μ§μ λΉ¨κ°, μ΄λ‘, νλμΌλ‘ μΉ νλ λΉμ©μ΄ μ£Όμ΄μ‘μ λ, μλ κ·μΉμ λ§μ‘±νλ©΄μ λͺ¨λ μ§μ μΉ νλ λΉμ©μ μ΅μκ°μ ꡬν΄λ³΄μ.
- 1λ² μ§μ μμ 2λ² μ§μ μκ³Ό κ°μ§ μμμΌ νλ€.
- Nλ² μ§μ μμ N-1λ² μ§μ μκ³Ό κ°μ§ μμμΌ νλ€.
- i(2 ≤ i ≤ N-1)λ² μ§μ μμ i-1λ², i+1λ² μ§μ μκ³Ό κ°μ§ μμμΌ νλ€.
μ λ ₯
첫째 μ€μ μ§μ μ N(2 ≤ N ≤ 1,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ κ° μ§μ λΉ¨κ°, μ΄λ‘, νλμΌλ‘ μΉ νλ λΉμ©μ΄ 1λ² μ§λΆν° ν μ€μ νλμ© μ£Όμ΄μ§λ€. μ§μ μΉ νλ λΉμ©μ 1,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λͺ¨λ μ§μ μΉ νλ λΉμ©μ μ΅μκ°μ μΆλ ₯νλ€.
λ°±μ€ μ€λ² 1ν°μ΄ / Dynamic Programming
λ§μ§λ§ 쑰건μ μλͺ» μ½μ΄μ ν€λ§Έλ λ¬Έμ ;;;; λ°λ³Έκ°
i-1λ²μ¨° μ§κ³Ό i+1λ²μ§Έ μ§μ μμ΄ λ¬λΌμΌ νλ€λ λ§μ μλλ° λ©λλ‘ κ·Έλ κ² μκ°ν΄λ²λ Έλ€ γ γ
κ²°κ΅ λκ° μ΄μν΄μ λ¬Έμ λ₯Ό λ€μ μ½μ΄λ³΄κ³ κΉ¨λ¬μ..
μ΄λ° μμΌλ‘ μ«μ 리μ€νΈ μ μ£Όκ³ ν©μ μ΅μκ°/ μ΅λκ° κ΅¬νλ DPλ μ΄μ μ΅μν΄μ§ κ² κ°λ€!
λ§μ΄ νμ΄λ΄μ κ·Έλ°κ° μ΄μ μ μ³€λ μ½ν λ€ μ€μμλ dpλ¬Έμ λ λ€ ν΄κ²°νμ
κ·Έλλ μ°μ΅ν΄μΌμ§...
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
int cost[1001][3] = {0,{0,}};
cin >> n;
for (int i = 0; i < n; ++i){
cin >> cost[i][0] >> cost[i][1] >> cost[i][2];
}
for (int i = 0; i<n; ++i) {
cost[i + 1][0] += min(cost[i][1], cost[i][2]);
cost[i + 1][1] += min(cost[i][0], cost[i][2]);
cost[i + 1][2] += min(cost[i][1], cost[i][0]);
}
cout << *min_element(begin(cost[n]), end(cost[n]));
return 0;
}