728x90
풀이
"백준 1149, RGB거리"에 조건이 추가된 문제이다.
입력받은 비용들을 여러 번 사용해야 하고, 처음에 고른 색에 따라 최소비용을 계산해주어야 한다.
소스코드
#include <stdio.h>
#define MAX 1000001
#define MIN(a,b) (a < b ? a : b)
int main(){
int N, result = MAX;
scanf("%d", &N);
int cost[N][3], min[3] = {0,}, old[3] = {0,};
for (int i = 0; i < N; i++)
scanf("%d %d %d", &cost[i][0], &cost[i][1], &cost[i][2]);
for (int i = 0; i < 3; i++){
old[0] = old[1] = old[2] = MAX;
old[i] = cost[0][i];
for (int j = 1; j < N; j++){
min[0] = cost[j][0] + MIN(old[1], old[2]);
min[1] = cost[j][1] + MIN(old[0], old[2]);
min[2] = cost[j][2] + MIN(old[0], old[1]);
for (int k = 0; k < 3; k++)
old[k] = min[k];
}
for (int j = 0; j < 3; j++)
if (i != j) result = MIN(result, min[j]);
}
printf("%d\n", result);
}
출처 및 참고자료
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 10800] 컬러볼 [C] (0) | 2021.09.05 |
---|---|
[백준 1377] 버블 소트 [C] (0) | 2021.09.05 |
[백준 1818] 책 정리 [C] (0) | 2021.09.04 |
[백준 12738] 가장 긴 증가하는 부분 수열 3 [C] (0) | 2021.09.04 |
[백준 14003] 가장 긴 증가하는 부분 수열 5 [C] (0) | 2021.09.04 |