[TIL]22.01.30
new Set
Setオブジェクトを使用する理由は、JavaScriptから重複するデータを削除するためです.次に、構造分解割当構文(Setオブジェクトなど)を使用して、データを配列形式で表示できます.
mapオブジェクトには、次のキーペアがあります.
mapはオブジェクトの順序とは異なります使用できます.(配列形式で出力)
Setオブジェクトを使用する理由は、JavaScriptから重複するデータを削除するためです.次に、構造分解割当構文(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 Mapmapオブジェクトには、次のキーペアがあります.
mapはオブジェクトの順序とは異なります使用できます.(配列形式で出力)
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;
}
論理的思考に欠けているようだ.意識的にもっと時間をかけるだけです.Reference
この問題について([TIL]22.01.30), 我々は、より多くの情報をここで見つけました https://velog.io/@juho00ng/TIL22.01.30テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol