function solution(id_list, report, k) {
let answer=Array.from({length: id_list.length}, () => 0);
let tmp=new Set();
for (let i=0; i<report.length; i++) {
tmp.add(report[i]);
}
tmp=Array.from(tmp);
let repoArr=[];
for (let i=0; i<tmp.length; i++) {
repoArr.push(tmp[i].split(' '));
}
for (let i=0; i<id_list.length; i++) {
let cnt=0;
let tmpArr=[];
for (let j=0; j<repoArr.length; j++) {
if (id_list[i] === repoArr[j][1]) {
cnt++;
tmpArr.push(repoArr[j][0]);
}
}
if (cnt >= k) {
for (let k=0; k<id_list.length; k++) {
for (let l=0; l<tmpArr.length; l++) {
if (id_list[k] === tmpArr[l]) (answer[k])++;
}
}
}
}
return answer;
}
let id_list = ["con", "ryan"];
let report = ["ryan con", "ryan con", "ryan con", "ryan con"];
let k = 2;
console.log(solution(id_list, report, k));
린(Lean) 개발 방법론 : 린 시스템의 품질 기법을 소프트웨어 개발 프로세스에 적용하여 프로세스의 낭비요소를 제거 후 결과를 측정, 성과를 분석하여 소프트웨어의 품질을 향상시키는 개발 방법론
컴포넌트가 real DOM으로 re-rendering이 되기 전에 re-evaluate(재평가)를 거친다.
re-evaluate(순서는 읽기 편하도록 나눠놓은 것이다. 실제로 이렇게 단계별로 진행되진 않는다.)
1) 새로운 state를 가지고 해당 컴포넌트(함수) 재실행(re-run)
2) 그 과정에서 컴포넌트 내부 구조는 모두 재생성(re-creation)(몇몇 hook 제외)
3) react가 변화 전과 변화 후 virtual DOM(가상 DOM)을 각각 생성하여 비교한 후, 차이점을 ReactDOM에게 전달
4) ReactDOM이 차이가 있는 부분만 real DOM으로 update(re-render)
(출처: https://velog.io/@kimyoungyin/React-%EA%B8%B0%EC%B4%88%EC%97%90%EC%84%9C-%EB%B2%97%EC%96%B4%EB%82%98%EA%B8%B0-State%EC%99%80-re-rendering%EC%97%90-%EB%8C%80%ED%95%B4)
ex) import React, { useState } from 'react';
react파일에서 특정 기능, 'useState'를 사용하길 원하면 중괄호를 사용한다. 이를 named import라고 한다.