Programmers에서 독학 첫 번째로 도전한 문제이다.
이걸 해결해보고자 한다.
id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]
k = 2
이면
[2,1,1,0]
function solution(id_list, report, k) {
var answer = [];
return answer;
}
answer
변수의 값을 [0,0,...,0]
의 형식으로 바꿔주어야 한다.const answer = new Array(id_list.length).fill(0);
const report_list = {};
id_list.map(user => {
report_list[user] = []
})
report
는 각각의 element가 "신고한 사람 + 신고할 사람"의 형식으로 되어있다.report.map(el => {
const [user_id, report_id] = el.split(' ')
})
report.map(el => {
const [user_id, report_id] = el.split(' ')
if(!report_list[report_id].includes(user_id)) {
report_list[report_id].push(user_id)
}
})
for (const key in report_list) {
if (report_list[key].length >= 2) {
report_list[key].map(user => {
answer[id_list.indexOf(user)] += 1
})
}
}
answer
를 return해주면 된다.function solution(id_list, report, k) {
const answer = new Array(id_list.length);
answer.fill(0)
const report_list = {} //
id_list.map((user)=>{
report_list[user] = [] //key로 userid를 value로 빈 배열을 가지는 객체
})
report.map((user)=>{
const [user_id, report_id] = user.split(' ')
if(!report_list[report_id].includes(user_id)){
report_list[report_id].push(user_id)
}
})
for(const key in report_list){
if(report_list[key].length >= k){ //이용정지 유저
report_list[key].map((user)=>{
answer[id_list.indexOf(user)] += 1
})
}
}
return answer;
}