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

수경·2022년 12월 26일
0

problem solving

목록 보기
97/174

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

풀이

잘 모르겠어서 냅다! 무지성으로 풀었다!

  1. reporter : [신고한 사람 이름(A) - A가 신고한 사람 hashset(중복 방지)] 저장

  2. reported : [신고 받은 사람 이름(A) - A를 신고한 사람 hashset(중복 방지)] 저장

  3. reporter와 reported를 각자 저장한 후, reported의 hashset.size() >= k 이면 계정 정지
    ➡️ reporter의 hashset을 가져와서(hashset), reported에서 (hashset)요소를 키로 갖는 value를 가져와서 개수를 셈 reported.get(hashset).size()


코드

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;

public class GetReport {
	public int[] solution(String[] id_list, String[] report, int k) {
		HashMap<String, HashSet<String>> reporter = new HashMap<>();
		HashMap<String, HashSet<String>> reported = new HashMap<>();

		for (String s : id_list) {
			reporter.put(s, new HashSet<>());
			reported.put(s, new HashSet<>());
		}

		for (String r : report) {
			String reporterInfo = r.split(" ")[0];
			String reportedInfo = r.split(" ")[1];
			reporter.get(reporterInfo).add(reportedInfo);
			reported.get(reportedInfo).add(reporterInfo);
		}

		int[] result = new int[id_list.length];
		for (int i = 0; i < id_list.length; i++) {
			HashSet<String> reporterHashset = reporter.get(id_list[i]);
			for (String hashset : reporterHashset) {
				if (reported.get(hashset).size() >= k) {
					result[i]++;
				}
			}
		}
		return result;
	}

	public static void main(String[] args) {
		GetReport getEmail = new GetReport();
		System.out.println(Arrays.toString(getEmail.solution(
				new String[]{"muzi", "frodo", "apeach", "neo"},
				new String[]{"muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"}, 2)));  // [2, 1, 1, 0]
		System.out.println(Arrays.toString(getEmail.solution(
				new String[]{"con", "ryan"},
				new String[]{"ryan con", "ryan con", "ryan con", "ryan con"}, 3))); // [0, 0]
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글