반응형
이 문제에서 set과 map 그리고 문자열을 적절히 잘 자르고 활용을 해야한다.
1. 먼저 map 을 하나 생성하여 해당 문자열의 인덱스 번호를 저장한다.
2. 신고받은 친구를 key값으로 갖는 두번째 맵을 생성하여 신고를 한 친구들을 차례대로 삽입한다. 이때, 중복을 허용하지않는 set 자료구조를 활용한다.
3. 신고받은 친구가 가지고 있는 친구들의 사이즈를 보고 k값보다 이상이면 answer벡터 친구들의 인덱스 번호의 value값을 하나씩 올려준다.
#include <string>
#include <vector>
#include <map>
#include <set>
#include <sstream>
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> index_m;
for(int i=0; i<id_list.size(); i++){
index_m[id_list[i]]=i;
}
stringstream ss;
map <string, set<string>> m;
for(auto x : report){
ss.str(x);
string s1, s2;
ss>>s1>>s2;
m[s2].insert(s1);
ss.clear();
}
for(auto it : m){
if(it.second.size()>=k){
for(auto x : it.second){
answer[index_m[x]]++;
}
}
}
return answer;
}
반응형
'프로그래머스 > Level_1' 카테고리의 다른 글
[프로그래머스 Level_1 / C++ / 카카오] 키패드 누르기 (0) | 2022.02.18 |
---|---|
[Level_1 / C++ / 카카오] [1차] 다트 게임 (0) | 2022.01.23 |
[Level_1 / C++ / 카카오] 실패율 (0) | 2022.01.23 |
[Level_1 / C++ / 카카오] [1차] 비밀지도 (0) | 2022.01.23 |
댓글