알고리즘/프로그래머스

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

흰색텀블러 2024. 8. 29. 19:04

<코드>

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

class Solution {
	public int[] solution(String[] id_list, String[] report, int k) {
		// 아이디 사람들 만큼 일단 초기화 시키기
		int[] answer = new int[id_list.length];
		// 유저아이디, 신고한 아이디 담을 해시
		HashMap<String, HashSet<String>> hash = new HashMap<>();
		// 신고당한 인간이 얼마나 신고당했는지 담을 해시
		HashMap<String, Integer> idx = new HashMap<>();
		for (int i = 0; i < id_list.length; i++) {
			String name = id_list[i];
			// 넣어주세요 데이터를!!!
			hash.put(name, new HashSet<>());
			// 아이디랑 인덱스 매핑해주세용
			idx.put(name, i);
		}
		for (String re : report) {
			String[] split = re.split(" ");
			// 나는 키이구요(신고한 인간)
			String key = split[0];
			// 나는 신고 당했어요.ㅠㅠ
			String value = split[1];
			// 여기서 value는 신고 당한 인간
			// key는 신고한 사람에 대해서 저장.
			// 예를 들어 A를 신고한사람이 B,C 이면
			// A : {B,C}가 되는거죠
			hash.get(value).add(key);
		}
		// 돌려주세요
		for (int i = 0; i < id_list.length; i++) {
			// 신고한사람을 hash에서 가져옵니다. 즉
			HashSet<String> send = hash.get(id_list[i]);
			// k명 이상 신고 당했으면
			if (send.size() >= k) {
				// 얼마나 나쁜짓을 한거야...
				for (String name : send) {
					// 해당 사람에게 숫자를 올려주세요
					answer[idx.get(name)]++;
				}
			}
		}
		return answer;
	}
}

 

넘무 바빳당...