일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- mysql
- IValueConverter
- convert
- chashtag
- algorithm
- Microsoft
- Github
- programmers
- git
- windows
- string
- C#
- File
- Visual Studio
- Process
- csharp
- nullable
- 코딩테스트
- Binding
- ListView
- log
- windows10
- .net
- tls
- coding-test
- dotNET
- commit
- Coding
- logging
- WPF
Archives
- Today
- Total
CHashtag
[프로그래머스] [C#] 신고 결과 받기 본문
반응형
안녕하세요.
오늘은 프로그래머스 "2022 KAKAO BLIND RECRUITMENT" 문제인 "신고 결과 받기" 를 풀어 보았습니다.
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/92334
문제 풀이 방법
Hash를 이용하여 사용자를 신고한 사람별로 묶어서 문제를 풀었습니다.
자세한 풀이는 주석으로 남겨 두었습니다.
코드
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution {
public int[] solution(string[] id_list, string[] report, int k)
{
// 절대 신고가 불가능한 경우이다.
if(k >= id_list.Length)
{
return new int[id_list.Length];
}
Dictionary<string, int> result = new Dictionary<string, int>();
ReportData[] rDatas = new ReportData[id_list.Length];
for(int i=0; i<id_list.Length; i++)
{
result.Add(id_list[i], 0);
rDatas[i] = new ReportData { Name = id_list[i], ReportPeople = new HashSet<string>() };
}
foreach(string ids in report)
{
string[] id = ids.Split(' ');
// 신고당한 사람의 Hash에 신고한 사람을 추가한다.
// 이렇게 되면 Hash에 의해 중복은 제거되고, 사용자가 몇번 신고되었는지 알 수 있다.
rDatas.First(x => x.Name == id[1]).ReportPeople.Add(id[0]);
}
for(int i=0; i<id_list.Length; i++)
{
// k 번 이상 신고받은 사람만 추려낸다.
if(rDatas[i].ReportCount < k)
{
continue;
}
foreach(var id in rDatas[i].ReportPeople)
{
result[id]++;
}
}
// id_list 순으로 횟수를 return한다.
return result.Select(x => x.Value).ToArray();
}
public class ReportData
{
public string Name { get; set; }
public int ReportCount { get { return ReportPeople.Count; } }
public HashSet<string> ReportPeople { get; set; }
}
}
반응형
'알고리즘' 카테고리의 다른 글
[백준] [C#] 21919. 소수 최소 공배수 (0) | 2022.02.27 |
---|---|
[프로그래머스] [C#] 주차 요금 계산 (0) | 2022.02.27 |
[프로그래머스] [C#] 거리두기 확인하기 (0) | 2022.01.10 |
[프로그래머스] [Java] 없는 숫자 더하기 (0) | 2021.09.14 |
[프로그래머스] [C#] 없는 숫자 더하기 (0) | 2021.09.14 |