신고 결과 받기

문제 신고 결과 받기


문제

불량 이용자를 신고하여 피신고자가 k번 신고를 받으면 신고자에게 처리 결과 이메일이 발송됩니다. (단 동일인에게 신고를 받는 경우는 한 번으로 처리됩니다.)
유저 리스트 id_list와 신고 내역 repost, 그리고 몇 번의 신고를 받아야 이메일이 발송되는 기준인 k가 주어질 때,
유저마다 신고 결과에 대한 이메일을 받는 횟수를 반환하게 해주세요.


풀이

let answer = new Array(id_list.length);
    answer.fill(0)

유저가 이메일을 받게되는 횟수를 담을 배열입니다. 카운트를 하기위해 0으로 채워줍니다.


report 중복 신고 내역 없애기

let reportSet = [...new Set(report)];

중복된 신고내역을 없애기 위해 repost를 set으로 처리하여 reposrSet 배열에 담아줍니다.

let reportArr = [];

repostSet 배열의 요소를 [신고자, 피신고자] 모양으로 바꿔 담아줄 reportArr배열입니다.


reportSet [신고자, 피신고자] 모양으로 만들기

    for(let x of reportSet){
        reportArr.push(x.split(' '));
    }    

피신고자 빈도수 세기

k번 이상의 신고를 받은 유저를 가려내기 위해 신고받은 횟수를 세어주겠습니다.

    let sH = new Map;
    let reportUser = [];
    let blackUser = [];

    for(let x of reportArr){
        reportUser.push(x[1])
    }
    for(let x of reportUser){
        sH.set(x, (sH.get(x) || 0)+1)
    }
    for(let [key, val] of sH){
        if(val >= k){
            blackUser.push(key)
        }
    }

reportUser 는 피신고자입니다. 빈도수를 세어 k이상인 유저가 이메일 발송대상인 blackUser 배열로 들어가게 됩니다.


blackUser를 신고한 유저 카운트

    for(let x of reportArr){
        if(blackUser.includes(x[1])){
            let num = id_list.indexOf(x[0]);
            answer[num]++;
        }
    }

나의 코드

function solution(id_list, report, k) {
    let answer = new Array(id_list.length);
    answer.fill(0)
    let reportSet = [...new Set(report)];
    let reportArr = [];
    
    let sH = new Map;
    let reportUser = [];
    let blackUser = [];
    
    for(let x of reportSet){
        reportArr.push(x.split(' '));
    }    
    for(let x of reportArr){
        reportUser.push(x[1])
    }    
    for(let x of reportUser){
        sH.set(x, (sH.get(x) || 0)+1)
    }    
    for(let [key, val] of sH){
        if(val >= k){
            blackUser.push(key)
        }
    }
    for(let x of reportArr){
        if(blackUser.includes(x[1])){
            let num = id_list.indexOf(x[0]);
            answer[num]++;
        }
    }
    
    return answer;
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN