반응형
https://www.acmicpc.net/problem/4883
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int num = 1;
while (1) {
int N;
cin >> N;
if (N == 0) break;
int a, b, c;
cin >> a >> b >> c;
c = b + c;
int dp[3], pre[3];
cin >> dp[0] >> dp[1] >> dp[2];
dp[0] += b;
dp[1] = min({dp[0], b, c}) + dp[1];
dp[2] = min({b, c, dp[1]}) + dp[2];
for (int i = 1; i <= N - 2; i++) {
int x, y, z;
pre[0] = dp[0];
pre[1] = dp[1];
pre[2] = dp[2];
cin >> x >> y >> z;
dp[0] = x + min(pre[0], pre[1]);
dp[1] = y + min({pre[0], pre[1], pre[2], dp[0]});
dp[2] = z + min({pre[1], pre[2], dp[1]});
}
cout << num++ << ". " << dp[1] << '\n';
}
return 0;
}
반응형
'Algorithm > problem' 카테고리의 다른 글
백준 2263번 : 트리의 순회 - Java (0) | 2022.09.08 |
---|---|
백준 9657번 : 돌 게임 3 - C++ (0) | 2022.09.04 |
백준 15486번 : 퇴사 2 - DP (0) | 2022.09.02 |
백준 23291번 : 어항 정리 - 시뮬레이션 C++ (0) | 2022.08.29 |
백준 23290번 : 마법사 상어와 복제 - 시뮬레이션 C++ (0) | 2022.08.28 |