문제 설명


문제 링크

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

접근 방법

(key,value) 형식의 문제로 접근함.

  1. id_list.map을 통해 userList를 key,value로 만들어 줍니다.
    => userList 는 신고당한 사람들이 key로 value에는 신고를 한 사람들을 저장해줍니다.
  2. report.map 을 통해 report로 부터 받은 string을 split 하여 가공 가능한 자료로 바꾸어 줍니다.
    => user_id,report_id 로 신고한 사람과 신고 당한 사람을 각각 분류
  3. "한 유저를 여러번 신고할 수도 있지만, 동인한 유저에 대한 신고 횟수는 1회로 처리됩니다." 의 조건을 해결
    => userList[신고당한 사람]이 신고한 사람이랑 같지 않게 조건식을 만들어 줍니다.
  4. userList(신고 당한 사람)의 length 가 k의 값과 같거나 클 때 -> 해당 userList[key]에 해당하는 value는 object 형식이기 때문에 for문이나 map을 사용하여 id_list.indexOf()를 이용해 answer인덱스에 해당하는 값을 더해줍니다.

코드

function solution(id_list, report, k) {
    const answer = new Array(id_list.length).fill(0);
    let userList = [];
    id_list.map((value)=>{
        userList[value]= [];
    })
    report.map(value=>{
        const [user_id,report_id]=value.split(' ');
        if(!userList[report_id].includes(user_id))userList[report_id].push(user_id);
    })
    for(const key in userList){
        if(userList[key].length>=k){
            userList[key].map(v=>{
                answer[id_list.indexOf(v)]++;
            })
        }
    }
    return answer;
}

+ Recent posts