PROGRAMMERS 프로그래머스 : 신고 결과 받기

Updated:

시작하면서

이번 문제는 구현 문제이다.

PROGRAMMERS : 신고 결과 받기

문제 아이디어

​ 이 문제는 적힌 내용을 그대로 구현하면 되는 문제이다. 주의할 점은 무턱대고 모든 경우를 선형적으로 돌면 시간 초과가 발생할 수 있다.

해결

using System;
using System.Collections.Generic;

public class Solution
{
    public int[] solution(string[] id_list, string[] report, int k)
    {
        Dictionary<string, List<string>> reportListDictionary = new Dictionary<string, List<string>>();
        foreach (string element in report)
        {
            string[] splited = element.Split(' ');
            string userID = splited[0];
            string reportedID = splited[1];

            if (reportListDictionary.ContainsKey(userID) == false)
            {
                reportListDictionary.Add(userID, new List<string>());
            }

            if (reportListDictionary[userID].Contains(reportedID) == false)
            {
                reportListDictionary[userID].Add(reportedID);
            }
        }

        Dictionary<string, int> reportedCountDictionary = new Dictionary<string, int>();
        foreach (KeyValuePair<string, List<string>> dic in reportListDictionary)
        {
            foreach (string element in dic.Value)
            {
                if (reportedCountDictionary.ContainsKey(element) == true)
                {
                    reportedCountDictionary[element] += 1;
                }
                else
                {
                    reportedCountDictionary[element] = 1;
                }
            }
        }

        int[] answer = new int[id_list.Length];
        for (int i = 0; i < id_list.Length; i++)
        {
            string userID = id_list[i];
            if (reportListDictionary.ContainsKey(userID) == true)
            {
                foreach (string element in reportListDictionary[userID])
                {
                    if (reportedCountDictionary[element] >= k)
                    {
                        answer[i]++;
                    }
                }
            }
        }

        return answer;
    }
}

Leave a comment