프로그래머스_C#/Level_1

[프로그래머스 C#] 신고 결과 받기

최애뎡 2022. 4. 13. 20:14
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/92334

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

using System;
using System.Collections.Generic;

public class Solution {
    public int[] solution(string[] id_list, string[] report, int k) {
        int[] answer = new int[id_list.Length];
        Dictionary<string, List<string>> _dic_report = new Dictionary<string, List<string>>();
        Dictionary<string, int> _dic_count = new Dictionary<string, int>();
        Dictionary<string, int> _dic_result = new Dictionary<string, int>();

        for (int i = -1; ++i < id_list.Length;)
        {
            _dic_report.Add(id_list[i], new List<string>());
            _dic_count.Add(id_list[i], 0);
            _dic_result.Add(id_list[i], 0);
        }

        foreach (string content in report)
        {
            string[] strA_temp = content.Split(' ');
            List<string> list_temp = _dic_report[strA_temp[1]];
            if (!list_temp.Contains(strA_temp[0]))
                list_temp.Add(strA_temp[0]);

            _dic_report[strA_temp[1]] = list_temp;
        }

        for (int i = -1; ++i < id_list.Length;)
        {
            string id = id_list[i];
            _dic_count[id] = _dic_report[id].Count;
        }

        for (int i = -1; ++i < id_list.Length;)
        {
            if (_dic_count[id_list[i]] >= k)
            {
                List<string> list_temp = _dic_report[id_list[i]];
                foreach (string id in list_temp)
                	_dic_result[id] += 1;
            }
        }

        int index = -1;
        foreach (int count in _dic_result.Values)
            answer[++index] = count;

        return answer;
    }
}

세상 무식해 보이지만 또 어떻게 보면 직관적인 느낌으로

각 ID당 신고 유저를 겹치지 않게 배출하고 

신고당한 횟수를 구한 뒤

이용정지 기준(k)에 부합할 경우

기준에 부합하는 ID를 신고한 ID에 +1 씩 해주는 느낌

 

할 게 없었는데 재밌당

반응형