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

allnight5·2023년 5월 12일
0

프로그래머스

목록 보기
65/73

링크

import java.util.Map;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set; 

class Solution {
    Map<String, Set<String>> map = new HashMap<>();
    Map<String, Integer> idListIndex= new HashMap<>();
    int[] stopUser;
    int[] answer; 
    public int[] solution(String[] id_list, String[] report, int k) {
        int point = id_list.length;
        answer = new int[point]; 
        for(int i=0; i<point;i++){
            idListIndex.put(id_list[i], i);
        }
        inReport(report);
        stopUserResult(point, k,id_list); 
        
        return answer;
    }
    
    private void stopUserResult(int point, int k, String[] id_list){ 
        stopUser = new int[point];
        
        for(String s: map.keySet()){
            Set<String> str = map.get(s); 
            stopUser[idListIndex.get(s)] = str.size(); 
        }
        
        for(int i=0; i<stopUser.length;i++){ 
            if(stopUser[i] >= k){ 
                Set<String> value = map.get(id_list[i]);
                for(String str: value){
                    answer[idListIndex.get(str)]++;
                }
            }
        }
    }
    
    private void inReport(String[] report){
        for(int i=0; i <report.length;i++ ){
            String[] strSplit = report[i].split(" ");
            if(map.get(strSplit[1]) == null){ 
                map.put(strSplit[1], new HashSet<String>()) ;
            }
            
            Set<String> value = map.get(strSplit[1]);
            value.add(strSplit[0]);
            map.put(strSplit[1], value); 
        }
    }
}

처음에 안됬었는데..
그 이유는 조건문에서 범위 지정이다
stopUser[i] >= k

k보다 크다면 전부 맞는건데
stopUser[i] == k
해줘서 같을때만 잡아냈다. 좀 더 조심해야한다.
저번에도 조건문 때문에 문제였는데.. 좀 더 좀 더 신경써야겠다.

profile
공부기록하기

0개의 댓글