์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช ์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๋ฉฐ, ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ ์ ์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ฐ์กํฉ๋๋ค.
์ด์ฉ์์ ID๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด id_list
, ๊ฐ ์ด์ฉ์๊ฐ ์ ๊ณ ํ ์ด์ฉ์์ ID ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด report
, ์ ์ง ๊ธฐ์ค์ด ๋๋ ์ ๊ณ ํ์ k
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ํ์๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
function solution(id_list, report, k) {
let reports = [...new Set(report)].map((a) => {
return a.split(" ");
});
let counts = new Map();
for (const bad of reports) {
counts.set(bad[1], counts.get(bad[1]) + 1 || 1);
}
let good = new Map();
for (const report of reports) {
if (counts.get(report[1]) >= k) {
good.set(report[0], good.get(report[0]) + 1 || 1);
}
}
let answer = id_list.map((a) => good.get(a) || 0);
return answer;
}
Map()
โ๏ธ Map ์ฃผ์ ๋ฉ์๋์ ํ๋กํผํฐ
new Map()
: Map ์์ฑ
map.set(key, value)
: key๋ฅผ ์ด์ฉํด value๋ฅผ ์ ์ฅํ๋ค.
map.get(key)
: 'key'์ ํด๋นํ๋ ๊ฐ์ ๋ฐํํ๋ค. (key๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด undefined๋ฅผ ๋ฐํ)
Set()
โ๏ธ Set ์ฃผ์ ๋ฉ์๋์ ํ๋กํผํฐ
new Set(iterable)
: Set ์์ฑ
set.add(value)
: ๊ฐ์ ์ถ๊ฐํ๊ณ ์
์์ ์ ๋ฐํ
set.delete(value)
: ๊ฐ์ ์ ๊ฑฐ
https://velog.io/@proshy/JSSet-Map-Object-%EC%A0%95%EB%A6%AC
https://lakelouise.tistory.com/38