[TIL]22.01.30
new Set
Set객체를 사용하는 이유는 자바스크립트에서 중복되는 데이터를 제거해준다. 그후에 [...Set객체] 와 같은 구조 분해 할당문법을 통해 배열형태로 데이터를 확인 가능하다.
let arr = [1,2,3,4,5];
const set1 = new Set([1, 2, 3, 4, 5]);
set1.add(arr);
console.log([...set1])
=> [1, 2, 3, 4, 5, Array(5)]
set1.add({id: 1, title: "jocker"}) // 객체도 할당가능
new Map
map객체는 다음과 같이 키 - 쌍을 보유함
map은 객체와 다르게 순서를 기억하고 있어서 for ... of문 사용이 가능하다. (배열형태로 출력됌)
const map1 = new Map();
map1.set('a', 1);
map1.set('b', 2);
map1.set('c', 3);
console.log(map1.get('a'));
// expected output: 1
map1.set('a', 97);
console.log(map1.get('a'));
// expected output: 97
console.log(map1.size);
// expected output: 3
map1.delete('b');
console.log(map1.size);
// expected output: 2
오늘 푼 알고리즘
function solution(id_list, report, k){
// report에서 유저와 신고한 id를 객체를 가진 배열로 만든다.
let objTemp = [...new Set(report)].map((data) => {
return {user: data.split(" ")[0], reportedUser: data.split(" ")[1]}
});
// 만든 객체에서 신고당한 횟수를 각 유저 객체에 넣는다.
let reportedUsers = getReportedPeople(id_list, report, k);
objTemp = objTemp.map((data, idx)=>{
data["reportedNumber"] = reportedUsers[idx];
return data;
})
// 신고한 유저의 신고당한 유저가 k번 이상 신고를 당했을시 신고한 유저가 메일을 받게된다.
// 배열을 반환해야하므로, id_list에 맞춰서 [] 반환한다. (조금 추상적일 수 있겠다.)
}
// input
//["muzi", "frodo", "apeach", "neo"], ["muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"], 2
// output
// { 유저, 유저가 신고한 ID, 신고당한 횟수}
// [정지된 ID]
/*
0: {user: 'muzi', reportedUser: 'frodo'}
1: {user: 'apeach', reportedUser: 'frodo'}
2: {user: 'frodo', reportedUser: 'neo'}
3: {user: 'muzi', reportedUser: 'neo'}
4: {user: 'apeach', reportedUser: 'muzi'}
*/
function getReportedPeople(id_list, report, k){
let objTemp = {};
let result = [];
for(let i = 0; i < id_list.length; i++){
objTemp[id_list[i]] = 0;
}
for(let i = 0; i < report.length; i++){
if(report[i] === report[i + 1]){
continue;
}else{
let reportedPerson = report[i].split(" ")[1];
objTemp[reportedPerson] += 1;
}
}
for(let i = 0; i < id_list.length; i++){
result.push(objTemp[id_list[i]]);
}
return result;
}
논리적사고가 많이 부족한 것 같다. 그저 시간을 의식적으로 많이 쏟아보자.
Author And Source
이 문제에 관하여([TIL]22.01.30), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@juho00ng/TIL22.01.30저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)