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
- 유니티 머신러닝
- Mathf.Clamp
- LookRotation
- LayerMask
- 유니티 리소스매니저
- 유니티 ResourceManager
- LFS
- 이진트리
- 유니티 시야 가림
- Raycast
- 유니티 오브젝트 풀링
- c++
- unity
- git-lfs
- 유니티 Vector3
- 오브젝트 풀링
- 소스코드 줄번호
- eulerAngles
- 유니티 InputManager
- 유니티 Collision
- InputManager
- ML-Agents
- 너비 우선 탐색
- 코드블럭 테마
- Quaternion.Euler
- 깊이 우선 탐색
- c++ 문자열 자르기
- 알고스팟
- 유니티
- 유니티 Rotate
Archives
- Today
- Total
무민은귀여워
[프로그래머스] 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 본문
반응형
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
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