본문 바로가기
코딩테스트 준비/프로그래머스

[프로그래머스][C++] 추억 점수

by 스테디코디스트 2023. 9. 12.
반응형

<문제 소개>


<소스 코드>

#include <string>
#include <vector>
#include <map>

using namespace std;

vector<int> solution(vector<string> name, vector<int> yearning, vector<vector<string>> photo) {
    vector<int> answer;
    
    map<string, int> scores;
    
    for(int i = 0 ; i < name.size(); i++)
    {
        // 이름별 그리움 점수 저장
        scores[name[i]] = yearning[i];
    }
    
    for(int i = 0; i < photo.size(); i++)
    {
        answer.push_back({0});
        
        for(int j = 0; j < photo[i].size(); j++)
        {
            string curName = photo[i][j];
            
            answer[i] += scores[curName];
        }
    }
    
    return answer;
}

<풀이과정>

1. 각 이름별 그리움 점수를 저장할 맵 scores를 선언한다.

2. 벡터 name을 돌면서 name의 각 원소를 key로, 벡터 yearning의 각 원소를 value로 scores에 저장한다.

3. 점수를 매길 이중벡터 photo를 돌면서 현재이름이 가진 점수를 scores를 통해 알아내고 해당 값을 answer에 저장한다.


<코멘트>

맵을 활용해 어렵지 않게 풀었다!


<제출결과>