[프로그래머스] 코딩테스트 연습 - 22

krkorklo·2022년 1월 31일
0

프로그래머스

목록 보기
22/78

level 1 - 신고 결과 받기

이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report, 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함수를 완성해주세요.

입출력 예시
id_list : ["con", "ryan"]
report : ["ryan con", "ryan con", "ryan con", "ryan con"]
k : 3
-> [0,0]

function solution(id_list, report, k) {
    var answer = new Array(id_list.length).fill(0);
    var count = new Array(id_list.length).fill(0);
    var stops = new Array(id_list.length).fill(false);
    var ids = new Array(id_list.length);
    for (var i=0; i<ids.length; i++) {
        ids[i] = new Array();
    }
    report = [...new Set(report)]
    
    report.forEach((r) => {
        var [id, stop_id] = r.split(" ");
        stops[id_list.indexOf(stop_id)] = ++count[id_list.indexOf(stop_id)] >= k ? true : false;
        ids[id_list.indexOf(id)].push(id_list.indexOf(stop_id))
    })
    
    stops.forEach((s, idx) => {
        if (s) {
            ids.forEach((i, id_idx) => {
                if (i.includes(idx)) {
                    answer[id_idx]++;
                }
            })
        }
    })
    
    return answer;
}

엄... 굉장히 신기하고 어렵게 풀었다
🧐

0개의 댓글