https://www.acmicpc.net/problem/1149
문제 풀이
그 전에 R을 칠한 경우, G를 칠한 경우, B를 칠한 경우를 나눠서 문제를 해결했다.
다음 R을 칠하는 경우는 그 전에 G랑 B를 칠한 경우에 현재 R을 칠하는 경우를 더해줬다. 다른 색도 마찬가지로 풀면 된다.
소스 코드
#include <iostream>
using namespace std;
int RGB[1001][3] = { 0 };
int sum[1001][3] = { 0 };
int main() {
int N;
cin >> N;
for (int i = 0; i < N; i++) {
for (int j = 0; j < 3; j++) {
cin >> RGB[i][j];
}
}
sum[0][0] = RGB[0][0];
sum[0][1] = RGB[0][1];
sum[0][2] = RGB[0][2];
for (int i = 1; i < N; i++) {
sum[i][0] = min(sum[i - 1][1], sum[i - 1][2]) + RGB[i][0];
sum[i][1] = min(sum[i - 1][0], sum[i - 1][2]) + RGB[i][1];
sum[i][2] = min(sum[i - 1][1], sum[i - 1][0]) + RGB[i][2];
}
cout << min(sum[N - 1][0], min(sum[N - 1][1], sum[N - 1][2]));
}
'알고리즘' 카테고리의 다른 글
[백준] 2293번 동전 1 C++ 문제풀이 (0) | 2023.09.14 |
---|---|
[백준] 11053번 가장 긴 증가하는 부분 수열 C++ 문제풀이 (0) | 2023.09.13 |
[백준] 9466번 텀 프로젝트 C++ 문제풀이 (0) | 2023.09.11 |
[백준] 13549번 숨바꼭질 3 C++ 문제풀이 (0) | 2023.09.10 |
[백준] 7569번 토마토 C++ 문제풀이 (1) | 2023.09.09 |