
https://www.acmicpc.net/problem/1149
1149번: RGB거리
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net
문제 풀이
그 전에 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 |