#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;
}
뭔가... 되게 길고 보기 힘들긴 한데... 성공하긴 했네...
'오늘의 알고리즘' 카테고리의 다른 글
[C++]2018 KAKAO BLIND RECRUITMENT[1차] 추석 트래픽(프로그래머스 3레벨) (0) | 2022.01.25 |
---|---|
[C++]2019 KAKAO BLIND RECRUITMENT 오픈채팅방(프로그래머스 2레벨) (0) | 2022.01.24 |
[C++]2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어(프로그래머스 1레벨) (0) | 2022.01.23 |
[C++]카카오프렌즈 컬러링북(프로그래머스 2레벨) (0) | 2022.01.21 |
[C++]2020 KAKAO BLIND RECRUITMENT 문자열 압축(프로그래머스 2레벨) (0) | 2022.01.21 |