코드
#include <iostream>
#include <algorithm> // min
using namespace std;
int dp[1000][3]; // 집의 수 최대 1000 기준
int main()
{
cin.tie(0); // 코드를 작성하면 입출력 속도가 빨라진다. -> C와 C++ 표준 stream의 동기화를 비활성화
cout.tie(0); // C++의 입출력인 cin, cout만 사용하도록 주의해야합니다.
int n; // 집의 수
int rgb[3]; // 색상별 비용
cin >> n;
dp[0][0] = 0; // 색상이 겹치지 않는 조건에서 합의 값 -> 0부터 시작
dp[0][1] = 0;
dp[0][2] = 0;
for (int i = 1; i <= n; i++) {
cin >> rgb[0]>>rgb[1]>>rgb[2];
dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + rgb[0]; // 현재를 r로 칠할 때
dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + rgb[1]; // 현재를 g로 칠할 때
dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + rgb[2]; // 현재를 b로 칠할 때
} // n까지 색상이 겹치지 않으며 작은 수 조건하에 누적합 계산
cout << min(min(dp[n][0], dp[n][1]), dp[n][2]); // 최종적으로 가장 작은 값
return 0;
}
'C++ > 백준 C++' 카테고리의 다른 글
[C/C++] 백준 1439번 뒤집기 (2) | 2023.12.03 |
---|---|
[C/C++] 백준 15649번 N과 M (1) - 참고 (2) | 2023.11.25 |
[C/C++] 백준 9095번 1, 2, 3 더하기 - 참고 (1) | 2023.11.24 |
[C/C++] 백준 11659번 구간 합 구하기 4 - 참고 (2) | 2023.11.23 |
[C/C++] 백준 1182번 부분수열의 합 - 참고 (2) | 2023.11.23 |