반응형
문제 링크 : https://www.acmicpc.net/problem/1149
문제 내용
RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이다. 처음 집과 마지막 집은 이웃이 아니다.
각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠할 때 드는 비용의 최솟값을 구하는 프로그램을 작성하시오.
소스코드
#include <iostream>
using namespace std;
int main() {
int **last = new int*[3];
int **val = new int*[3];
int N;
cin >> N;
for(int i=0; i<3; i++){
last[i] = new int[N];
val[i] = new int[N];
}
for(int i=0; i<N; i++){
for(int j=0; j<3; j++){
cin >> val[j][i];
}
}
last[0][0] = val[0][0];
last[1][0] = val[1][0];
last[2][0] = val[2][0];
for(int i=1; i<N; i++){
last[0][i] = min(last[1][i-1], last[2][i-1])+val[0][i];
last[1][i] = min(last[0][i-1], last[2][i-1])+val[1][i];
last[2][i] = min(last[1][i-1], last[0][i-1])+val[2][i];
}
cout << min(min(last[0][N-1], last[1][N-1]), last[2][N-1]);
return 0;
}
반응형
'컴퓨터 > Online Judge' 카테고리의 다른 글
| [acmicpc.net] 2167 2차원 배열의 합 (0) | 2016.09.11 |
|---|---|
| [acmicpc.net] 2579 계단 오르기 (0) | 2016.09.09 |
| [acmicpc.net] 2193 이친수 (0) | 2016.09.08 |
| [acmicpc.net] 1463 1로 만들기 (0) | 2016.09.07 |
| [acmicpc.net] 1003 피보나치 함수 (0) | 2016.09.01 |