์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช
์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 1ํ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- k๋ฒ ์ด์ ์ ๊ณ ๋ ์ ์ ๋ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋๋ฉฐ, ํด๋น ์ ์ ๋ฅผ ์ ๊ณ ํ ๋ชจ๋ ์ ์ ์๊ฒ ์ ์ง ์ฌ์ค์ ๋ฉ์ผ๋ก ๋ฐ์กํฉ๋๋ค.
- ์ ์ ๊ฐ ์ ๊ณ ํ ๋ชจ๋ ๋ด์ฉ์ ์ทจํฉํ์ฌ ๋ง์ง๋ง์ ํ๊บผ๋ฒ์ ๊ฒ์ํ ์ด์ฉ ์ ์ง๋ฅผ ์ํค๋ฉด์ ์ ์ง ๋ฉ์ผ์ ๋ฐ์กํฉ๋๋ค.
๋ค์์ ์ ์ฒด ์ ์ ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k = 2(์ฆ, 2๋ฒ ์ด์ ์ ๊ณ ๋นํ๋ฉด ์ด์ฉ ์ ์ง)์ธ ๊ฒฝ์ฐ์ ์์์ ๋๋ค.
์ ์ ID | ์ ์ ๊ฐ ์ ๊ณ ํ ID | ์ค๋ช |
"muzi" | "frodo" | "muzi"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"apeach" | "frodo" | "apeach"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"frodo" | "neo" | "frodo"๊ฐ "neo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"muzi" | "neo" | "muzi"๊ฐ "neo"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
"apeach" | "muzi" | "apeach"๊ฐ "muzi"๋ฅผ ์ ๊ณ ํ์ต๋๋ค. |
๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ๋นํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ID | ์ ๊ณ ๋นํ ํ์ |
"muzi" | 1 |
"frodo" | 2 |
"apeach" | 0 |
"neo" | 2 |
์ ์์์์๋ 2๋ฒ ์ด์ ์ ๊ณ ๋นํ "frodo"์ "neo"์ ๊ฒ์ํ ์ด์ฉ์ด ์ ์ง๋ฉ๋๋ค. ์ด๋, ๊ฐ ์ ์ ๋ณ๋ก ์ ๊ณ ํ ์์ด๋์ ์ ์ง๋ ์์ด๋๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ ID | ์ ์ ๊ฐ ์ ๊ณ ํ ID | ์ ์ง๋ ID |
"muzi" | ["frodo", "neo"] | ["frodo", "neo"] |
"frodo" | ["neo"] | ["neo"] |
"apeach" | ["muzi", "frodo"] | ["frodo"] |
"neo" | ์์ | ์์ |
๋ฐ๋ผ์ "muzi"๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 2ํ, "frodo"์ "apeach"๋ ๊ฐ๊ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ 1ํ ๋ฐ๊ฒ ๋ฉ๋๋ค.
์ด์ฉ์์ ID๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด id_list, ๊ฐ ์ด์ฉ์๊ฐ ์ ๊ณ ํ ์ด์ฉ์์ ID ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด report, ์ ์ง ๊ธฐ์ค์ด ๋๋ ์ ๊ณ ํ์ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ์ ์ ๋ณ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ํ์๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 2 ≤ id_list์ ๊ธธ์ด ≤ 1,000
- 1 ≤ id_list์ ์์ ๊ธธ์ด ≤ 10
- id_list์ ์์๋ ์ด์ฉ์์ id๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ด๋ฉฐ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- id_list์๋ ๊ฐ์ ์์ด๋๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- 1 ≤ report์ ๊ธธ์ด ≤ 200,000
- 3 ≤ report์ ์์ ๊ธธ์ด ≤ 21
- report์ ์์๋ "์ด์ฉ์id ์ ๊ณ ํid"ํํ์ ๋ฌธ์์ด์ ๋๋ค.
- ์๋ฅผ ๋ค์ด "muzi frodo"์ ๊ฒฝ์ฐ "muzi"๊ฐ "frodo"๋ฅผ ์ ๊ณ ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
- id๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ด์ฉ์id์ ์ ๊ณ ํid๋ ๊ณต๋ฐฑ(์คํ์ด์ค)ํ๋๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
- ์๊ธฐ ์์ ์ ์ ๊ณ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- 1 ≤ k ≤ 200, k๋ ์์ฐ์์ ๋๋ค.
- return ํ๋ ๋ฐฐ์ด์ id_list์ ๋ด๊ธด id ์์๋๋ก ๊ฐ ์ ์ ๊ฐ ๋ฐ์ ๊ฒฐ๊ณผ ๋ฉ์ผ ์๋ฅผ ๋ด์ผ๋ฉด ๋ฉ๋๋ค.
๋์ ํ์ด
function solution(id_list, report, k) {
let Resultmap = new Map();
for(let i = 0; i < id_list.length; i++){
const key = id_list[i];
const value = 0;
Resultmap.set(key, value);
}
let Arrested = [];
let UniqueHadReport = [];
let HadReportmap = new Map(); // { ์ ๊ณ ๋นํ์ฌ๋ => [์ ๊ณ ํ์ฌ๋ ๋ฐฐ์ด] }
let DoReportmap = new Map(); // { ์ ๊ณ ํ์ฌ๋ => [์ ๊ณ ๋นํ์ฌ๋ ๋ฐฐ์ด] }
for(let i = 0; i < report.length; i++){
const hadReportUser = report[i].split(" ")[1];
const doReportUser = report[i].split(" ")[0];
if(HadReportmap.has(hadReportUser)){
const HadReportMapVal = HadReportmap.get(hadReportUser);
HadReportMapVal.push(doReportUser);
//์ค๋ณต ์ ๊ฑฐ
UniqueHadReport = HadReportMapVal.filter((el, idx) => HadReportMapVal.indexOf(el) === idx);
HadReportmap.set(hadReportUser, UniqueHadReport);
} else {
HadReportmap.set(hadReportUser, [doReportUser]);
}
if(DoReportmap.has(doReportUser)){
const DoReportMapVal = DoReportmap.get(doReportUser);
DoReportMapVal.push(hadReportUser);
//์ค๋ณต ์ ๊ฑฐ
UniqueDoReport = DoReportMapVal.filter((el, idx) => DoReportMapVal.indexOf(el) === idx);
DoReportmap.set(doReportUser, UniqueDoReport);
} else {
DoReportmap.set(doReportUser, [hadReportUser]);
}
}
// ์ ์ง์ํค๊ธฐ
HadReportmap.forEach((value, key) => {
if(value.length >= k){
Arrested.push(key);
}
})
// ์ ๊ณ ์๊ฐ ์ ์ง์ํจํ์ ์ทจํฉ
DoReportmap.forEach((value, key) => {
let isArrested = value.filter(val => Arrested.includes(val));
if(isArrested){
Resultmap.set(key, isArrested.length);
}
})
return Array.from(Resultmap.values());
}
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://school.programmers.co.kr/learn/challenges
'๐จ JavaScript > ๋ฌธ์ ํ๊ธฐ (ํ๋ก๊ทธ๋๋จธ์ค, ์ฝ๋ฉ์ ํ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Level 1] PCCP ๊ธฐ์ถ๋ฌธ์ 1๋ฒ : ๋ถ๋ ๊ฐ๊ธฐ (0) | 2023.12.19 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Level 1] ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (0) | 2023.12.10 |
[ํ๋ก๊ทธ๋๋จธ์ค Level 1] ๋ฐํํ๋ฉด ์ ๋ฆฌ (0) | 2023.12.10 |
[ํ๋ก๊ทธ๋๋จธ์ค Level 1] ์ถ์ต ์ ์ (0) | 2023.12.10 |
[ํ๋ก๊ทธ๋๋จธ์ค Level 1] ์ผ์ด์ฌ (0) | 2023.12.10 |