[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ
function solution(id_list, report, k) {
const reported = new Map(id_list.map(name => [name, 0]));
let whomReported = {};
const reportedCount = {};
[...new Set(report)].forEach(couple => {
const [์ ๊ณ ์, ํผ์ ๊ณ ์] = couple.split(" ");
whomReported[ํผ์ ๊ณ ์] ? whomReported[ํผ์ ๊ณ ์].push(์ ๊ณ ์) : whomReported[ํผ์ ๊ณ ์] = [์ ๊ณ ์];
reportedCount[ํผ์ ๊ณ ์] ? reportedCount[ํผ์ ๊ณ ์]++ : reportedCount[ํผ์ ๊ณ ์] = 1;
});
const ์ ์ง์ ์ = Object.keys(reportedCount).filter(key => reportedCount[key] >= k)
const ์ต์ข
์ ๊ณ ๋ชฉ๋ก = ์ ์ง์ ์ .flatMap(name => whomReported[name]);
์ต์ข
์ ๊ณ ๋ชฉ๋ก.map(name => reported.set(name, reported.get(name) + 1))
return [...reported.values()]
}
์ค๋๋ง์ ์๊ณ ๋ฆฌ์ฆ ํผ ๊ฒ ๊ฐ๋ค..
์ค๋์ ๋ฝ์ธํธ๋ '๊ฐ์ ์ฌ๋์ด ์ ๊ณ ํ๊ฑด 1๋ฒ์ผ๋ก ์น๋ค' ๋ผ๋ ์กฐ๊ฑด์ด์๋ค.
(๊ฐ๋จํ๊ฒ ์๋์ฒ๋ผ ์ฒ๋ฆฌํด์ค ์ ์๋ค.)
[...new Set(report)].~~
๊ทธ๊ฑธ ์ํด์คฌ๋๋ ์ ๋๋ก ๋ ๊ฐ์ด ๋์ค์ง ์์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณ์๋ช ์ง๊ธฐ๋ ์ด๋ ค์์ ๊ทธ๋ฅ ํ๊ธ๋ก ์ผ๋๋ ํ์คํ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์๋ ํ๋ฆ์ด ๊นจ์ง์ง ์์๋ค.
๋ด๊ฐ ๋ช ํํ ์ดํดํ ์ ์๋ ๋ณ์ ๋ช ์ ์ฐ๋ ๊ฒ๋ ์ฐธ ํจ์จ๋ฉด์์ ์ค์ํ๊ตฌ๋จผ..
๋ฐ์ ์ด๋ฆ ์์๋๋ก ๊ฐ์ ๋ฐฐ์ด์์ ์ถ๋ ฅํด์ผ ํ๊ธฐ์ Map ์ ์ฌ์ฉํ๋ค.
๋จผ์ ๋๊ฐ ์ ๊ณ ๋ฅผ ํ๋์ง (whomReported) ์ ์ ๊ณ ๋นํ ์ฌ๋์ ๋ช๋ฒ ๋นํ๋์ง(reportedCount) ๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก object ๋ก ๋ง๋ค์ด์คฌ๋ค.
์ ์ง์ ์ ๋ value ๊ฐ k ๋ณด๋ค ํฐ key ๊ฐ์ ๋ชจ์ ๋ฐฐ์ด์ด๋ค.
์ต์ข ์ ๊ณ ๋ชฉ๋ก์ ์ ์ง๋ ์ ์ ์ ์๋ ์ฌ๋๋ค์ whomReported ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. (์ ํจํ ์ ๊ณ ์ ๋ฆฌ์คํธ)
๊ทธ ๋ชฉ๋ก๋ค์ map ํด์ ์ฒ์์ ๋ง๋ Map ์ key ๊ฐ์ผ๋ก ๊ฐ์ ์ค์ ํด์คฌ๋ค.
๊ทธ๋ผ values ๊ฐ ์ฒ์ ์ด๋ฆ ์์๋๋ก ๋์ด์์ผ๋, ๊ทธ๋๋ก ๊ฐ์ ๊ฐ์ ธ์์ ๋ฐฐ์ด๋ก ๋ง๋ ํ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค!
์ฝ 1์๊ฐ 30๋ถ ์ ๋๊ฐ ์์๋๋ค.