picks, vector minerals) { int answer = 0; vector minerals2; int len = minerals.size(); int flag = 0; int mineral = 0; //광맥의 정렬 //미네랄을 5개 단위로 잘라서 각 광물의 종류를 저장 //세자리수 숫자로 저장 //100자리에 다이아, 10자리에 철, 1자리에 돌개수 저장 for (int i = 0; i0){ minerals2.push_back(mineral); flag = 0; mineral = 0; } //광맥과 곡괭이 개수를 비교 int stone_pic"> picks, vector minerals) { int answer = 0; vector minerals2; int len = minerals.size(); int flag = 0; int mineral = 0; //광맥의 정렬 //미네랄을 5개 단위로 잘라서 각 광물의 종류를 저장 //세자리수 숫자로 저장 //100자리에 다이아, 10자리에 철, 1자리에 돌개수 저장 for (int i = 0; i0){ minerals2.push_back(mineral); flag = 0; mineral = 0; } //광맥과 곡괭이 개수를 비교 int stone_pic"> picks, vector minerals) { int answer = 0; vector minerals2; int len = minerals.size(); int flag = 0; int mineral = 0; //광맥의 정렬 //미네랄을 5개 단위로 잘라서 각 광물의 종류를 저장 //세자리수 숫자로 저장 //100자리에 다이아, 10자리에 철, 1자리에 돌개수 저장 for (int i = 0; i0){ minerals2.push_back(mineral); flag = 0; mineral = 0; } //광맥과 곡괭이 개수를 비교 int stone_pic">

피드백

#include <string>
#include <vector>
#include <algorithm>

using namespace std;
int mine_str_int(string mineral){
    if(mineral == "diamond"){
        return 100;
    }
    else if(mineral == "iron"){
        return 10;
    }
    else if(mineral == "stone"){
        return 1;
    }
    return 0; // 예외 처리를 위해 기본값 추가
}

int solution(vector<int> picks, vector<string> minerals) {
    int answer = 0;
    vector<int> minerals2;
    int len = minerals.size();
    int flag = 0;
    int mineral = 0;
    
    //광맥의 정렬
    //미네랄을 5개 단위로 잘라서 각 광물의 종류를 저장    
    //세자리수 숫자로 저장
    //100자리에 다이아, 10자리에 철, 1자리에 돌개수 저장
    
    for (int i = 0; i<len; i++){
        mineral += mine_str_int(minerals.at(i));
        flag++;
        if(flag == 5){
            minerals2.push_back(mineral);
            flag = 0;
            mineral = 0;
        }
    }
    //나머지 저장
    if(flag>0){
        minerals2.push_back(mineral);
        flag = 0;
        mineral = 0;
    }
        
    //광맥과 곡괭이 개수를 비교
    int stone_pick = picks.at(2);
    int iron_pick = picks.at(1);
    int dia_pick = picks.at(0);
    int all_pick = stone_pick+iron_pick+dia_pick;
    int i = 0;
    
    if(all_pick >= minerals2.size()){
        //곡괭이가 더 많거나 같을 경우(모든 광맥을 캐야함)
        //다이아곡괭이부터 써서 가장 비싼 광맥부터 채굴
        //가장 비싼광맥부터 정렬
        sort(minerals2.rbegin(), minerals2.rend());
        // 다이아 곡괭이 사용
        while (dia_pick > 0 && i < minerals2.size()) {
            // 다이아 곡괭이로 채굴
            answer += (minerals2[i] / 100);
            answer += ((minerals2[i] % 100) / 10);
            answer += (minerals2[i] % 10);
            i++;
            dia_pick--;
        }

        // 철 곡괭이 사용
        while (iron_pick > 0 && i < minerals2.size()) {
            answer += 5 * (minerals2[i] / 100);
            answer += ((minerals2[i] % 100) / 10);
            answer += (minerals2[i] % 10);
            i++;
            iron_pick--;
        }

        // 돌 곡괭이 사용
        while (stone_pick > 0 && i < minerals2.size()) {
            answer += 25 * (minerals2[i] / 100);
            answer += 5 * ((minerals2[i] % 100) / 10);
            answer += (minerals2[i] % 10);
            i++;
            stone_pick--;
        }
    }
    else{
        //광맥이 더 많을 경우 (모든 곡괭이를 써야함)
        //돌곡괭이부터 가장 싼 광맥부터 채굴
        //가장 싼광맥부터 정렬
        sort(minerals2.begin(), minerals2.end());
        
        // 돌 곡괭이 사용
        while (stone_pick > 0 && i < minerals2.size()) {
            answer += 25 * (minerals2[i] / 100);
            answer += 5 * ((minerals2[i] % 100) / 10);
            answer += (minerals2[i] % 10);
            i++;
            stone_pick--;
        }
        
        // 철 곡괭이 사용
        while (iron_pick > 0 && i < minerals2.size()) {
            answer += 5 * (minerals2[i] / 100);
            answer += ((minerals2[i] % 100) / 10);
            answer += (minerals2[i] % 10);
            i++;
            iron_pick--;
        }
        // 다이아 곡괭이 사용
        while (dia_pick > 0 && i < minerals2.size()) {
            // 다이아 곡괭이로 채굴
            answer += (minerals2[i] / 100);
            answer += ((minerals2[i] % 100) / 10);
            answer += (minerals2[i] % 10);
            i++;
            dia_pick--;
        }
    }
    
    
    return answer;
}
#include <string>
#include <vector>
#include <algorithm>

using namespace std;
vector<int> mine_str_int(string mineral, vector<int> mine){
	if(mineral == "diamond"){
        mine[0]++;
    }
    else if(mineral == "iron"){
        mine[1]++;
    }
    else if(mineral == "stone"){
        mine[2]++;
    }
	return mine;
}

int solution(vector<int> picks, vector<string> minerals) {
    int answer = 0;
    vector<vector<int>> mineral;
    int len = minerals.size();
    int flag = 0;
    vector<int> mine = {0,0,0};
    
    //미네랄을 5개 단위로 잘라서 각 광물의 종류를 저장
    //저장은 3자리 숫자로 저장
    //100자리에 다이아, 10자리에 철, 1자리에 돌개수 저장
    
    for (int i = 0; i<len; i++){
        mine = mine_str_int(minerals.at(i), mine);
        flag++;
        if(flag == 5){
            mineral.push_back(mine);
            flag = 0;
            mine = {0, 0, 0};
        }
    }
    //나머지 저장
    if(!minerals.empty() && flag > 0){
        mineral.push_back(mine);
        flag = 0;
        mine = {0, 0, 0};
    }
    
	//광맥 저장 끝 오름차순 sort
	sort(mineral.rbegin(), mineral.rend());
	
    // 다곡, 철곡, 돌곡 순서로 진행
    int stone_pick = picks.at(2);
    int iron_pick = picks.at(1);
    int dia_pick = picks.at(0);
	
	vector<int> stone_mine;
	vector<int> iron_mine;
	vector<int> dia_mine;
	
	int stone, iron, dia;
	
	for(int i = 0; i<mineral.size(); i++){
		stone = 25*mineral.at(i).at(0)+5*mineral.at(i).at(1)+mineral.at(i).at(2);
		iron = 5*mineral.at(i).at(0)+mineral.at(i).at(1)+mineral.at(i).at(2);
		dia = mineral.at(i).at(0)+mineral.at(i).at(1)+mineral.at(i).at(2);
		
		stone_mine.push_back(stone);
		iron_mine.push_back(iron);
		dia_mine.push_back(dia);
	}
	int min;
	int min_index;
	
	//곡괭이가 더 많을 경우
	//제일 비싼 광맥부터 다곡부터 써서 캠
	if((stone_pick+iron_pick+dia_pick)>=stone_mine.size()){		
		int i = 0;
		// 다이아 곡괭이로 채굴
		while (dia_pick > 0 && i < stone_mine.size()) {
			answer += dia_mine[i];
			i++;
			dia_pick--;
		}

		// 철 곡괭이 사용
		while (iron_pick > 0 && i < stone_mine.size()) {
			answer += iron_mine[i];
			i++;
			iron_pick--;
		}

		// 돌 곡괭이 사용
		while (stone_pick > 0 && i < stone_mine.size()) {
			answer += stone_mine[i];
			i++;
			stone_pick--;
		}
	}
	//광맥이 더 많을 경우
	//돌곡부터 가장 싼 광맥을 캠
	else {
		while(dia_pick >0 && !dia_mine.empty()){
			min_index = min_element(dia_mine.begin(), dia_mine.end()) - dia_mine.begin();
			min = *min_element(dia_mine.begin(), dia_mine.end());
			answer += min;
			
			stone_mine.erase(stone_mine.begin() + min_index);
			iron_mine.erase(iron_mine.begin() + min_index);
			dia_mine.erase(dia_mine.begin() + min_index);
			dia_pick--;
		}
		while(iron_pick >0 && !iron_mine.empty()){
			min_index = min_element(iron_mine.begin(), iron_mine.end()) - iron_mine.begin();
			min = *min_element(iron_mine.begin(), iron_mine.end());
			answer += min;
			
			stone_mine.erase(stone_mine.begin() + min_index);
			iron_mine.erase(iron_mine.begin() + min_index);
			dia_mine.erase(dia_mine.begin() + min_index);
			iron_pick--;
		}
		while(stone_pick>0 && !stone_mine.empty()){
			min_index = min_element(stone_mine.begin(), stone_mine.end()) - stone_mine.begin();
			min = *min_element(stone_mine.begin(), stone_mine.end());
			answer += min;
			
			stone_mine.erase(stone_mine.begin() + min_index);
			iron_mine.erase(iron_mine.begin() + min_index);
			dia_mine.erase(dia_mine.begin() + min_index);
			stone_pick--;
		}
	}
	
	
    
    return answer;
}
#include <string>
#include <vector>
#include <algorithm>

using namespace std;
int mine_str_int(string mineral){
    if(mineral == "diamond"){
        return 100;
    }
    else if(mineral == "iron"){
        return 10;
    }
    else if(mineral == "stone"){
        return 1;
    }
    return 0; // 예외 처리를 위해 기본값 추가
}

int solution(vector<int> picks, vector<string> minerals) {
    int answer = 0;
    vector<int> mine;
    int len = minerals.size();
    int flag = 0;
    int mineral = 0;
    
    //미네랄을 5개 단위로 잘라서 각 광물의 종류를 저장
    //저장은 3자리 숫자로 저장
    //100자리에 다이아, 10자리에 철, 1자리에 돌개수 저장
    
    for (int i = 0; i<len; i++){
        mineral += mine_str_int(minerals.at(i));
        flag++;
        if(flag == 5){
            mine.push_back(mineral);
            flag = 0;
            mineral = 0;
        }
    }
    //나머지 저장
    if(flag>0){
        mine.push_back(mineral);
        flag = 0;
        mineral = 0;
    }
    
    //각 단위 별로 저장된 3자리숫자를 오름차순 sort
    sort(mine.rbegin(), mine.rend());
    
    // 다곡, 철곡, 돌곡 순서로 진행
    int stone_pick = picks.at(2);
    int iron_pick = picks.at(1);
    int dia_pick = picks.at(0);
    int i = 0;
	
	// 다이아 곡괭이 사용
	while (dia_pick > 0 && i < mine.size()) {
		// 다이아 곡괭이로 채굴
		answer += (mine[i] / 100);
		answer += ((mine[i] % 100) / 10);
		answer += (mine[i] % 10);
		i++;
		dia_pick--;
	}

	// 철 곡괭이 사용
	while (iron_pick > 0 && i < mine.size()) {
		answer += 5 * (mine[i] / 100);
		answer += ((mine[i] % 100) / 10);
		answer += (mine[i] % 10);
		i++;
		iron_pick--;
	}

	// 돌 곡괭이 사용
	while (stone_pick > 0 && i < mine.size()) {
		answer += 25 * (mine[i] / 100);
		answer += 5 * ((mine[i] % 100) / 10);
		answer += (mine[i] % 10);
		i++;
		stone_pick--;
	}
	
    
    return answer;
}