알고리즘/문제 [프로그래머스] 신고 결과 받기 - 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters public class KAKAO_GetReportResult { public static void main(String[] args) { String[] arr1_1 = new String[]{"muzi", "frodo", "apeach", "neo"}; String[] arr1_2 = new String[]{"muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"}; int k_1 = 2; String[] arr2_1 = new String[]{"con", "ryan"}; String[] arr2_2 = new String[]{"ryan con", "ryan con", "ryan con", "ryan con"}; int k_2 = 3; System.out.println(Arrays.toString(solution(arr1_1, arr1_2, k_1))); // [2,1,1,0] System.out.println(Arrays.toString(solution(arr2_1, arr2_2, k_2))); // [0,0] } static int[] solution(String[] id_list, String[] report, int k) { int idSize = id_list.length; int[] answer = new int[idSize]; HashMap<String, Integer> hm = new HashMap<>(); // hm 은 이름 - 배열인덱스 매핑 ArrayList<HashSet<String>> al = new ArrayList<>(idSize); // al 은 이름에 매칭된 인덱스 - 해당 유저 신고목록(Set) for(int i=0; i<idSize; i++){ hm.put(id_list[i], i); al.add(new HashSet<>()); } StringTokenizer st; for(int i=0; i<report.length; i++){ st = new StringTokenizer(report[i]); String mem = st.nextToken(); String target = st.nextToken(); al.get(hm.get(target)).add(mem); // 신고를 당한 사람(target)의 인덱스 위치에 해당하는 Set에 신고자 (mem)목록으로 추가 } for(int i=0; i<al.size(); i++){ HashSet<String> hs = al.get(i); if(hs.size() >= k){ // 게시판 정지에 해당하는 신고 횟수를 넘을 경우 hs.forEach(s -> { answer[hm.get(s)]++; // 그 사람을 신고한 사람의 인덱스로 가서 +1 처리 }); } } return answer; } } view raw KAKAO_GetReportResult.java hosted with ❤ by GitHub 문제를 읽고나서 풀이는 해당 문제가 말하는 대로 하면 된다고 생각했고 제일 많이 쓴 시간은 데이터들을 담는 자료형들을 정하는 부분이였다 입력으로 받는 id_list 배열 : 사용자 목록 report 배열 : 누가 누굴 신고했는지 k : 게시판 정지 기준 신고 횟수 에 더해서 hm 해시맵 : 사용자 이름 - 인덱스 매핑 al 어레이리스트<해시셋> : 어레이리스트 : 사용자 (hm을 사용해 위치 파악 가능) 해시셋 : 사용자를 신고한 사람의 목록 으로 세팅하고 문제에서 주어진대로 로직 실행 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Time to lazy Contents 당신이 좋아할만한 콘텐츠 [BOJ/백준 - 10250] ACM 호텔 2022.06.21 [프로그래머스] 뉴스 클러스터링 2022.06.17 [BOJ/백준 - 1105] 팔 2022.02.16 [BOJ/백준 - 2798] 블랙잭 2022.02.16 댓글 0 + 이전 댓글 더보기