프로그래머스

[Level1] 신고 결과 받기 Java 저 세상 풀이

sayho 2022. 2. 5. 22:27

나의 저세상 문제 풀이

 

다른 분들은 HashMap도 사용하고 Stream도 멋지게 사용하시는데. . 이중 반복문만 오조오억번 사용해버림.. (반성)

import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        // 본인이 신고한 사람 중 정지당한 사람의 수 
        int result[] = new int[id_list.length]; 
		
        // 정지된 회원 목록
        List<String> stopIdList = new ArrayList<String>();

        // 신고 당한 횟수
        int answer[] = new int[id_list.length];

        // 중복 신고 제거
        Set<String> removeDupli = new HashSet<>(Arrays.asList(report));
        Iterator<String> iter = removeDupli.iterator();

        // 1. 각 ID별 신고 당한 횟수 카운트
        while(iter.hasNext()) {
            String arr[] = iter.next().split(" ");
            for(int i=0; i<id_list.length; i++) {
                if(id_list[i].equals(arr[1])) {
                    answer[i]++;
                    break;
                }
            }
        }

        // 2. 정지당한 id 따로 저장
        for(int i=0; i<id_list.length; i++) {
            if(answer[i] >= k) {
                stopIdList.add(id_list[i]);
            }
        }

        // 3. 각 회원별 신고멤버 정지현황 저장
        Set<String> removeDupli2 = new HashSet<>(Arrays.asList(report));
        Iterator<String> iter2 = removeDupli2.iterator();

        while(iter2.hasNext()) {
            String[] what = iter2.next().split(" ");
            for(int i=0; i<id_list.length; i++) {
                if(what[0].equals(id_list[i]) && stopIdList.contains(what[1])) {
                    result[i]++;
                    break;
                }
            }
        }

        return result;
    }
}