Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바스크립트
- next-pwa
- 투두리스트
- 리덕스
- 넥스트
- 리액트
- 리엑트
- 배열
- Recoil
- useMutation
- programmers
- React
- NextJS
- SSR
- csr
- 생명주기
- 겹치는 선분의 길이
- debounce
- 파이어베이스
- Next
- react-query
- 달리기경주
- JS
- Redux
- JavaScript
- google firebase
- customModal component 만들기
- lifecycle
- Firebase
- todolist
Archives
- Today
- Total
끄적끄적
[Programmers] 신고 결과 받기 (JS) 본문
처음 문제를 보자마자 객체 하나로 싹 넣어서 하면 될 거같다는 생각이 왔다.
근데 마지막에 살짝 삐긋했던 것은 원하는 값은 정지당한 사람의 수가 아닌
a가 [b,c,...]를 신고했을때 신고당한 사람들 중 정지를 당한 사람의 수의 배열이다.
풀이방식은 다음과 같다.
1. p라는 객체에 누가, 누구를 신고했는지 저장한다.
2. 신고내역을 하나씩 보며 p를 작성한다.
3. p를 보고 각 id당 신고당한 회수를 살펴보고 조건보다 많이 되어있는 정지당할 사람을 추출한다.
4. 정지당한 id를 신고한 id를 추출한다
p = {
'id1': {
'id2': 0,
'id3': 0,
'id4': 0
},
'id2': {...}
...
}
//solution
function solution(id_list, report, k) {
var answer = [];
let p = {};
let reported = {}; // 각 id들이 신고당한 횟수를 기록하는 변수
let reportedNames = []; // 정지당한 id를 기록하는 변수
// p는 현재 유저들이 신고한 기록을 담은 object
id_list.forEach(d => {
p[d] = {};
reported[d] = 0;
answer[d] = 0;
id_list.forEach(d2 => d!==d2 ? p[d][d2] = 0 : null)
});
// -------------------->
// p = {
// 'muzi': { frodo: 0, apeach: 0, frodo: 0, ...},
// 'frodo': {...}
// }
// 이런식으로 key 값의 사람이 각 사람을 신고한 횟수이다.
// 신고내역을 하나씩 보며, 신고한 내역을 기록한다.
report.forEach(d => {
let a = d.split(' ')[0];
let b = d.split(' ')[1];
p[a][b] = 1;
})
// 기록된 신고내역으로 각 id들이 신고당한 횟수를 기록한다.
id_list.forEach(d => {
Object.keys(p[d]).forEach(d2 => {
if(p[d][d2]){
reported[d2]++;
// 만약 k보다 신고회수가 많아지고 reportedNames에 현재 기록되어있지 않다면 추가한다.
if(reported[d2] >= k && !reportedNames.includes(d2)) reportedNames.push(d2);
}
})
})
// 우리가 원하는 것은 누가 어떤이들을 신고했을때 그 사람이 정지당한 개수이다.
for(let key in p){
for(let key2 in p[key]){
// key 가 key2를 신고한 회수가 1이상이고, 정지당한 목록에 포함되어있다면
if(p[key][key2] >= 1 && reportedNames.includes(key2)){
answer[key]++;
}
}
}
answer = Object.values(answer)
return answer;
}
'Programmers' 카테고리의 다른 글
[Programmers] 완주하지 못한 선수 (JS) (0) | 2024.01.23 |
---|---|
[Programmers] 햄버거 만들기 (JS) (0) | 2024.01.19 |
[Programmers] 둘만의 암호 (JS) (0) | 2024.01.18 |
[Programmers] 대충 만든 자판 (JS) (0) | 2024.01.18 |
[Programmers] 가장 많이 받은 선 풀이(JS) (0) | 2024.01.10 |
Comments