[CodeUp] #3501-RGB 거리 (Small)(탐색기반설계)

chrmqgozj·2022년 1월 28일
0

CodeUp

목록 보기
35/48
#include <iostream>
#include <vector>
using namespace std;

vector<vector <int>> cost;
int ans = 0;

void add(int index,vector<int> color, int sum){
	if(index == cost.size()){
		// cout << "\nsum: " << sum << "\n\n\n\n";
		if(sum < ans){
			ans = sum;
		}
		return;
	}
	else{
		for(int i=0;i<3;i++){
			if(index!=0){
				if(color[index-1]!=i){
					color[index] = i;
					// cout << cost[index][i] << " ";
					add(index+1,color,sum+cost[index][i]);
					color[index] = -1;
				}
			}
			else{
				color[index] = i;
				// cout << cost[index][i] << " ";
				add(index+1,color,sum+cost[index][i]);
				color[index] = -1;
			}
		}
		return;
	}
}

int main(){
	int n;
	vector<int> color;
	cin >> n;
	cost.resize(n,vector<int> (3,0));
	color.resize(n,-1);
	
	for(int i=0;i<n;i++){
		for(int j=0;j<3;j++){
			cin >> cost[i][j];
		}
		ans += cost[i][i%2];
	}
	
	add(0,color,0);
	
	cout << ans;
	
}

0개의 댓글

관련 채용 정보