말랑한 하루
[Programmers] 신고 결과 받기 (Lv 1, JavaScript) 본문
반응형
[ 학습 내용 ]
- includes : include와 혼동하지 말 것
- push : add, append와 혼동하지 말 것
- Set : 동일 신고 내용을 제거하기 위해 사용했음
- Map : 신고된 유저와 회수, 신고한 유저와 메일 처리 회수를 key 매핑하기 위해 사용
[ 소스 코드 ]
function solution(id_list, report, k) {
var answer = [];
var users = [];
var mail = [];
id_list.map((id) => {
users[id] = [];
mail[id] = 0;
})
report.map((report_detail) => {
let user = report_detail.split(" ");
if (!users[user[1]].includes(user[0])) {
// 자신을 신고한 사람 추가
users[user[1]].push(user[0]);
}
})
id_list.map((id) => {
let length = users[id].length;
// 자신이 정지가 될 때 신고한 사람에게 처리메일 추가
if (length >= k) {
users[id].map((user) => {
mail[user]++;
})
}
})
console.log(mail)
id_list.map((id, index) => {
answer[index] = mail[id]
})
return answer;
}
[ 심화 코드 ]
function solution(id_list, report, k) {
let reports = [...new Set(report)].map(a=>{return a.split(' ')});
let counts = new Map();
for (const bad of reports){
counts.set(bad[1],counts.get(bad[1])+1||1)
}
let good = new Map();
for(const report of reports){
if(counts.get(report[1])>=k){
good.set(report[0],good.get(report[0])+1||1)
}
}
let answer = id_list.map(a=>good.get(a)||0)
return answer;
}
[ 코드 분석 ]
1. Set 깊은 복사를 한 이유
[new Set(report)]
=> [
Set {
'muzi frodo',
'apeach frodo',
'frodo neo',
'muzi neo',
'apeach muzi'
}
]
[...new Set(report)]
=> [
'muzi frodo',
'apeach frodo',
'frodo neo',
'muzi neo',
'apeach muzi'
]
2. 논리연산자 ||를 쓴 이유
...
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Programmers] 실패율 (Lv 1, JavaScript) (0) | 2022.07.06 |
---|---|
[Programmers] 크레인 인형뽑기 게임 (Lv 1, JavaScript) (0) | 2022.07.06 |
[Programmers] 키패드 누르기 (Lv 1, JavaScript) (0) | 2022.06.30 |
[Programmers] 숫자 문자열과 영단어 (Lv 1, JavaScript) (0) | 2022.06.29 |
[Programmers] 신규 아이디 추천 (Lv 1, JavaScript) (0) | 2022.06.29 |
Comments