[프로그래머스] 신고 결과 받기 C++

semi·2022년 6월 27일
0

coding test

목록 보기
14/57

https://programmers.co.kr/learn/courses/30/lessons/92334

#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <set>
using namespace std;

vector<int> solution(vector<string> id_list, vector<string> report, int k)
{
	vector<int> answer(id_list.size(), 0);
	map<string, int> m;
	map<string, set<string>> str_vec;
	map<string, set<string>> reverse_str_vec;
	map<string, int> id2idx;
	string str = "";
	string user1, user2;
	for (int i = 0; i < id_list.size(); i++)
	{
		m[id_list[i]] = 0;
		id2idx[id_list[i]] = i;
	}
	for (int i = 0; i < report.size(); i++)
	{
		str = "";
		user1 = "";
		user2 = "";
		for (int j = 0; j < report[i].size(); j++)
		{
			if (report[i][j]>='a' && report[i][j]<='z')
			{
				str += report[i][j];
				
			}
			else
			{
				user1 += str;
				str = "";
			}
		}
		user2 += str;
		str_vec[user1].insert(user2);
		reverse_str_vec[user2].insert(user1);
	}
	
	for (auto x : str_vec)
	{
		for (auto y : str_vec[x.first])
		{
			m[y]++;
		}
	}

	for (int i = 0; i < id_list.size(); i++)
	{
		if (m[id_list[i]] >= k)
		{
			for (auto x : reverse_str_vec[id_list[i]])
				answer[id2idx[x]]++;
		}
	}

	return answer;
}

int main(void)
{
	vector<string> id_list1 = { "muzi", "frodo", "apeach", "neo" };
	vector<string> report1 = { "muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi" };
	int k1 = 2;
	vector<string> id_list2 = { "con", "ryan" };
	vector<string> report2 = { "ryan con", "ryan con", "ryan con", "ryan con" };
	int k2 = 3;
	vector<int> answer = solution(id_list2, report2, k2);
	return 0;
}

0개의 댓글