#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
vector<int> solution(vector<string> id_list, vector<string> report, int k)
{
    vector<int> answer;
    vector<vector<string>> vecReporter = {};
    vecReporter.resize(id_list.size());
    vector<vector<string>> vecRecipient;
    vecRecipient.resize(id_list.size());
 
    sort(report.begin(), report.end());
    report.erase(unique(report.begin(), report.end()),report.end());
 
    for (int i = 0; i < report.size(); ++i)
    {
        int space = report[i].find(" ");
        string reportStr = string(report[i], 0, space);
        string reccipientStr = string(report[i],space + 1, report[i].size() - 1);
 
        for (int j = 0; j < id_list.size(); ++j)
        {
        	// 신고한 사람을 신고받은 사람 벡터에 입력
            if (id_list[j] == reportStr)
                vecReporter[j].push_back(reccipientStr);
 
 			// 신고받은 사람을 신고한 사람 벡터에 입력
            if (id_list[j] == reccipientStr)
                vecRecipient[j].push_back(reportStr);
        }
    }
 
    for (int i = 0; i < vecRecipient.size(); ++i)
    {
    	// 신고받은 사람의 크기가 신고누적 수가 안된다면 신고한 사람의 크기를 줄인다.
        if (vecRecipient[i].size() < k)
        {
            for (int j = 0; j < vecRecipient[i].size(); ++j)
            {
                for (int z = 0; z < id_list.size(); ++z)
                {
                    if (id_list[z] == vecRecipient[i][j])
                    {
                        vecReporter[z].pop_back();
                        break;
                    }
                }
            }
        }
    }
 
    for (int i = 0; i < vecReporter.size(); ++i)
    {
        answer.push_back(vecReporter[i].size());
    }
 
    return answer;
}

뭔가... 되게 길고 보기 힘들긴 한데... 성공하긴 했네...

+ Recent posts