문제 설명
문제 링크
접근 방법
(key,value) 형식의 문제로 접근함.
- id_list.map을 통해 userList를 key,value로 만들어 줍니다.
=> userList 는 신고당한 사람들이 key로 value에는 신고를 한 사람들을 저장해줍니다. - report.map 을 통해 report로 부터 받은 string을 split 하여 가공 가능한 자료로 바꾸어 줍니다.
=> user_id,report_id 로 신고한 사람과 신고 당한 사람을 각각 분류 - "한 유저를 여러번 신고할 수도 있지만, 동인한 유저에 대한 신고 횟수는 1회로 처리됩니다." 의 조건을 해결
=> userList[신고당한 사람]이 신고한 사람이랑 같지 않게 조건식을 만들어 줍니다. - 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;
}
'알고리즘문제풀이' 카테고리의 다른 글
프로그래머스[Level1] 크기가 작은 부분 문자열 -Javascript (0) | 2023.04.20 |
---|---|
프로그래머스[Level2] 무인도 여행 - JavaScript (0) | 2023.04.20 |
프로그래머스[Level2] 조이스틱 - JavaScript (0) | 2023.04.19 |
프로그래머스[Level2] 큰수 만들기 -Javascript (0) | 2023.04.19 |
프로그래머스[Level1] 크기가 작은 부분 문자열 -Javascript (0) | 2023.04.19 |