그냥 문제가 준 순서대로 풀어보았다. 다른사람이 푼 풀이를 보니 처음 보는 것들이 많아서 공부를 해 보았다.
Map 이 무엇인지 찾아보았다.
값을 키와 값으로 묶어 저장하고 조회하는 기능을 가지고 있다.( Python의 Dictionary와 같은 자료구조)
Map.prototype.clear():Map의 모든 값 삭제
Map.prototype.delete(key):Map에 요소가 존재한다면 true 반환 후 삭제. 요소가 없다면 Map.prototype.has(key)
가 false 반환.
Map.prototype.get(key): key와 관련된 값 반환. 값이 없다면 undefined 반환
Map.prototype.has(key): 값이 맵 개체의 키에 연결되었는지 여부를 나타내는 boolen을 반환합니다.
Map.prototype.set(key, value):Map 객체의 키 값을 설정합니다. Map 개체를 반환합니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
for...of 문은 각각의 고유한 특성의 값을 실행할 명령과 함께 사용자 지정 반복 후크를 호출하여, 반복 가능한 객체(배열, Map, Set, 인수 객체 등을 포함)를 통해 반복하는 루프를 만듭니다.
for (variable of object) {
statement
}
다음 예는 for...of 루프와 for...in 루프의 차이를 보여줍니다. 속성 이름을 통해 for...in이 반복하는 동안, for...of은 속성 값을 통해 반복합니다:
let arr = [3, 5, 7];
arr.foo = "hello";
for (let i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i); // logs "3", "5", "7"
}
function solution(id_list, report, k) {
var answer = [];
let report_set= new Set(report);
report_set=[...report_set];
let report_name=[]
for(i=0;i<report_set.length;i++){
report_name[i]=report_set[i].split(' ');
}
let reported_num=[];
let reported_name=[];
for(j=0;j<id_list.length;j++){
reported_num[j]=0
for(i=0;i<report_name.length;i++){
if(report_name[i][1]===id_list[j]){
reported_num[j]=reported_num[j]+1;
}
}
}
for(i=0;i<reported_num.length;i++){
if(reported_num[i]>=k){
reported_name.push(id_list[i]);
}
}
let tmp=[];
for(i=0;i<report_name.length;i++){
for(j=0;j<reported_name.length;j++)
if(report_name[i][1]===reported_name[j]){
tmp.push(report_name[i][0]);
}
}
var t;
for(i=0;i<id_list.length;i++){
t=0;
for(j=0;j<tmp.length;j++){
if(tmp[j]===id_list[i]){
t=t+1;
}
}
answer.push(t);
}
return answer;
}