ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

๋˜์ž๐Ÿ‹ 2023. 8. 15. 15:40
728x90
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๋ถ„ ์ •๋„๊ฐ€ ์†Œ์š”๋๋‹ค.

728x90
๋ฐ˜์‘ํ˜•