문제
답안
function solution(id_list, report, k) {
let answer = [];
// id_list와 길이가 같은 배열 생성(기본값은 0)
answer = new Array(id_list.length).fill(0);
// 신고한 사람, 신고 당한 사람의 값이 들어갈 객체 생성
let reporting = {};
let reported = {};
// 중복 제거(다시 공부할것)
for(let i=0; i<id_list.length; i++){
reporting[id_list[i]] = new Set();
reported[id_list[i]] = 0;
}
// report에서 띄어쓰기를 기준으로 나눠준다 i가 0일때, temp = [[muzi], [frodo]]
for(let i = 0; i < report.length; i++){
let temp = report[i].split(" ");
// 신고한 사람값에 신고당한 사람의 값이 없다면 reporting객체에 추가,
if(!reporting[temp[0]].has(temp[1])){
reporting[temp[0]].add(temp[1]);
//그리고 reported에 있는 해당값에 +1(신고당한 횟수)
reported[temp[1]]++;
}
}
// reporting에 포함된 id_list i번째 값을 n으로 변수 선언
// 예를들어, i가 0이면 n = frodo, neo가 출력된다.
for(let i = 0; i < id_list.length; i++){
let n = reporting[id_list[i]];
// n 내부에 있는 값들을 j로 출력한다.
for(let j of n){
// 신고된 횟수가 담겨있는 reported에 해당값이 k보다 클 경우 answer의 i번째 값에 1을 증가시킨다.
if(reported[j] >= k)
{
answer[i]++;
}
}
}
return answer;
}
후기
객체에 대해서 공부하는 중이라, 아직 정확하게 다시 풀 수는 없을 것 같다.
그리고, 중복을 제거하는 방법인 new Set(), [...set]을 이용해서 풀 수 없었기에,
객체를 초기화 하는 방법에 대해서도 공부가 필요해보인다.
어떻게 풀어야 할지는 감이 오지만,,,, 적절한 메서드와 함수를 짜기엔 아직 실력이 부족하다 ㅠㅠ
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
프로그래머스 Level 1 - 크레인 인형뽑기 게임 (Javascript) (3) | 2023.11.21 |
---|---|
프로그래머스 Level 1 - 둘만의 암호 (Javascript) (2) | 2023.11.20 |
프로그래머스 Level 1 - 대충 만든 자판 (Javascript) (0) | 2023.11.18 |
프로그래머스 Level 1 - 체육복 (Javascript) (2) | 2023.11.17 |
프로그래머스 Level 1 - 약수의 개수와 덧셈 (Javascript) (0) | 2023.11.16 |