본문 바로가기

프로그래머스

[프로그래머스/Java] 신고 결과 받기

📚 신고 결과 받기

[JAVA] 프로그래머스 Level 1.

코딩테스트 연습 - 신고 결과 받기 | 프로그래머스 스쿨 (programmers.co.kr)

문제

(생략)

제한사항

(생략)

입출력 예

id_list report k result
["muzi", "frodo", "apeach", "neo"] ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"] 2 [2,1,1,0]
["con", "ryan"] ["ryan con", "ryan con", "ryan con", "ryan con"] 3 [0,0]

문제 해결 방안

소스 코드

import java.util.*;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        
        Map<String, Set<String>> map = new HashMap<>();
        Map<String, Integer> reMap = new HashMap<>();
        
        for(int i=0; i<report.length; i++) {
            String[] strs = report[i].split(" ");
            
            Set<String> set = map.getOrDefault(strs[0], new HashSet<>());
            int asize = set.size();
            set.add(strs[1]);
            int bsize = set.size();
            
            map.put(strs[0], set);
            if(asize!=bsize) {
                reMap.put(strs[1], reMap.getOrDefault(strs[1], 0)+1);    
            }
            
        }
                                                                  
        for(int i=0; i<id_list.length; i++) {
            Set<String> set = map.getOrDefault(id_list[i], new HashSet<>());
            for(String s : set) {
                if(reMap.getOrDefault(s, 0) >=k) {
                    answer[i]+=1;
                }
            }
        }
        
        
        return answer;
    }
}