Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코드블럭 테마
- 오브젝트 풀링
- 유니티 Rotate
- InputManager
- 이진트리
- ML-Agents
- LayerMask
- Mathf.Clamp
- LFS
- 유니티 InputManager
- 너비 우선 탐색
- Raycast
- LookRotation
- 유니티 시야 가림
- 유니티 Vector3
- 유니티 리소스매니저
- 알고스팟
- c++ 문자열 자르기
- eulerAngles
- 깊이 우선 탐색
- Quaternion.Euler
- 유니티
- c++
- 소스코드 줄번호
- 유니티 ResourceManager
- 유니티 오브젝트 풀링
- unity
- 유니티 Collision
- 유니티 머신러닝
- git-lfs
Archives
- Today
- Total
무민은귀여워
[프로그래머스] 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 본문
반응형
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/92334
2. 풀이
첫번째 풀이
1. 신고 리스트에서 한 유저가 동일한 유저에 대한 신고를 제외시킨다
2. 신고 리스트를 읽어, 유저별 누적 신고수를 저장
3. 신고 리스트를 읽어 정지 대상자를 확인하여, 유저별 받을 메일 수 저장
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer(id_list.size(), 0); // 유저가 받을 결과 메일 수
map<string, int> id_map; // id 인덱스 참조용
for (int i = 0; i < id_list.size(); i++)
{
id_map.insert(make_pair(id_list[i], i));
}
vector<int> report_cnt(id_list.size(), 0); // 누적 신고수
// 동일한 유저에 대한 신고 제거
sort(report.begin(), report.end());
report.erase(unique(report.begin(), report.end()), report.end());
// 누적 신고수 기록
for (auto str : report)
{
string name2;
name2 = str.substr(str.find(" ") + 1, str.length());
for (int n = 0; n < id_list.size(); n++)
{
if (strcmp(name2.c_str(), id_list[n].c_str()) == 0)
{
report_cnt[n] += 1;
}
}
}
// 유저가 받을 결과 메일 수 담기
for (auto str : report)
{
string name1, name2;
name1 = str.substr(0, str.find(" "));
name2 = str.substr(str.find(" ") + 1, str.length());
int idx1 = id_map[name1];
int idx2 = id_map[name2];
// name2가 정지대상자인지 확인
if (report_cnt[idx2] >= k)
{
answer[idx1] += 1;
}
}
return answer;
}
두번째 풀이
처음 풀이에서 신고리스트를 두번 읽고 있으므로... 다른 풀이를 보고 수정
1. 신고 리스트에서 한 유저가 동일한 유저에 대한 신고를 제외시킨다
2. 신고 리스트를 읽어, 유저별 신고 리스트를 만든다
3. 유저별 신고 리스트를 읽어 정지 대상자를 확인하여, 유저별 받을 메일 수 저장
vector<int> solution(vector<string> id_list, vector<string> report, int k) {
vector<int> answer(id_list.size(), 0); // 유저가 받을 결과 메일 수
map<string, int> id_map; // id 인덱스 참조용
for (int i = 0; i < id_list.size(); i++)
{
id_map.insert(make_pair(id_list[i], i));
}
// 동일한 유저에 대한 신고 제거
sort(report.begin(), report.end());
report.erase(unique(report.begin(), report.end()), report.end());
// 유저별 신고 기록
vector<pair<int, int>> report_list;
for (auto str : report)
{
string name1, name2;
name1 = str.substr(0, str.find(" "));
name2 = str.substr(str.find(" ") + 1, str.length());
report_list.push_back({ id_map[name1], id_map[name2] });
}
// 유저가 받을 결과 메일 수 담기
vector<int> report_cnt(id_list.size(), 0);
for (auto elem : report_list) report_cnt[elem.second]++;
for (auto elem : report_list) if (report_cnt[elem.second] >= k) answer[elem.first]++;
return answer;
}
반응형
'IT > 알고리즘' 카테고리의 다른 글
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방 (0) | 2022.05.23 |
---|---|
[프로그래머스] 2022 KAKAO BLIND RECRUITMENT 신규 아이디 추천 (0) | 2022.05.20 |
시간복잡도 big-O big-Ω big-θ 공간복잡도 (0) | 2021.05.18 |
소수 찾기 - 에라토스체네스 체 (0) | 2021.05.18 |
깊이 우선 탐색, 너비 우선 탐색 구현 수도코드 (0) | 2021.05.18 |
Comments