728x90
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import java.util.*; class Solution { public int[] solution(String[] id_list, String[] report, int k) { Map<String, User> userMap = new HashMap<>(); for(String id : id_list) userMap.put(id, new User(id)); // System.out.println(userMap.size()); List<String> bannedIdList = new ArrayList<>(); for(String r : report){ String[] stk = r.split(" "); String reportUserId = stk[0]; String reportedUserId = stk[1]; User reportUser = userMap.get(reportUserId); User reportedUser = userMap.get(reportedUserId); if(!reportUser.reportSet.contains(reportedUserId)){ reportUser.reportSet.add(reportedUserId); if(++reportedUser.reportedNum>=k) bannedIdList.add(reportedUser.id); } } // bannedIdList.forEach(s -> System.out.println(s)); // for(String id : id_list) // System.out.println(userMap.get(id).reportedNum); int[] answer = new int[id_list.length]; for(int i=0; i<id_list.length; i++){ int resultMailNum = 0; for(String s : userMap.get(id_list[i]).reportSet){ // System.out.print(s+" "); resultMailNum += (bannedIdList.contains(s))? 1:0; } // System.out.println(); answer[i] = resultMailNum; } return answer; } public class User{ String id; int reportedNum; Set<String> reportSet; User(String id){ this.id = id; reportedNum = 0; reportSet = new HashSet<>(); } } } | cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 멀쩡한 사각형 (수학) (0) | 2022.02.27 |
---|---|
[프로그래머스][JAVA] 문자열 압축 (문자열) (0) | 2022.02.23 |
[프로그래머스][JAVA] [1차] 비밀지도 (문자열) (0) | 2022.02.06 |
[프로그래머스][JAVA] 문자열 내 마음대로 정렬하기 (문자열) (0) | 2022.02.05 |
[프로그래머스][JAVA] 시저 암호 (문자열) (0) | 2022.02.04 |