Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ ๋ณธ๋ฌธ
๐ ๋ฌธ์
์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช
์ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ์ ๊ณ ํ์์ ์ ํ์ ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ์ ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ณ ํ ์ ์์ต๋๋ค.
- ํ ์ ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ๊ณ ํ ์๋ ์์ง๋ง, ๋์ผํ ์ ์ ์ ๋ํ ์ ๊ณ ํ์๋ 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 ์์๋๋ก ๊ฐ ์ ์ ๊ฐ ๋ฐ์ ๊ฒฐ๊ณผ ๋ฉ์ผ ์๋ฅผ ๋ด์ผ๋ฉด ๋ฉ๋๋ค.
๐ก ์์ด๋์ด
id_list ๋๋ฉด์ ๊ฒ์ฒด ๋ง๋ค์ด์ key๋ ์ด๋ฆ, value๋ key๊ฐ ์ ๊ณ ํ ์ฌ๋ ๋ฐฐ์ด์ ํ ๋นํ๋ค -> whoReport
value ๋ฅผ ํ ๋นํ ๋ ์ด๋ฏธ ์ ๊ณ ํ ์ด๋ ฅ์ด ์์ผ๋ฉด ๋ฃ์ง ์๋๋ค.
๊ฐ ์ ์ ๊ฐ ๋ช ๋ฒ ์ ๊ณ ๋นํ๋์ง ์ ์ฅ ํ ๊ฐ์ฒด๋ ๋ง๋ ๋ค. -> reportCount
๋ฉ์ผ ๋ช ๋ฒ ๋ฐ์๋์ง ์ ์ฅ ํ ๊ฐ์ฒด๋ ๋ง๋ ๋ค -> getMail
reportCount ๋๋ฉด์ k ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด, whoReport ์์ ๊ทธ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์ ๋ฅผ ์ฐพ๊ณ , ๊ทธ ์ ์ ์ getMail ๊ฐ์ ++ ํด์ค๋ค.
โ๏ธ ํ์ด
function solution(id_list, report, k) {
var answer = [];
const whoReport = {}; // ๋๊ฐ ๋๊ตฌ ์ ๊ณ ํ๋์ง ๋ด์ ๊ฐ์ฒด
const reportCount = {}; // ๋๊ฐ ๋ช ๋ฒ ์ ๊ณ ๋นํ๋์ง ๋ด์ ๊ฐ์ฒด
const getMail = {}; // ๋๊ฐ ๋ช ๋ฒ ๋ฉ์ผ ๋ฐ์๋์ง ๋ด์ ๊ฐ์ฒด
for(i=0; i<id_list.length; i++){
// id_list ๋๋ฉด์ ๊ฐ ๊ฐ์ฒด์ ์ ์ ์ด๋ฆ ์ด๊ธฐํ ํด์ค๋ค.
whoReport[id_list[i]] = [];
reportCount[id_list[i]] = 0;
getMail[id_list[i]] = 0;
}
for(let i=0; i<report.length; i++){
// ์ ๊ณ ํ ์ฌ๋๊ณผ ๋นํ ์ฌ๋์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ ๋์ด ์์ผ๋ ์ชผ๊ฐ์ whoReport์ ๋๊ฐ ๋๊ตด ์ ๊ณ ํ๋์ง ํ ๋นํด์ค๋ค
let temp = report[i].split(' ');
if(whoReport[temp[0]].includes(temp[1]) === false){
whoReport[temp[0]].push(temp[1]);
}
}
for(let key in whoReport){
// ์ ๊ณ ๋นํ ์ฌ๋ ์ด๋ฆ ๋ฐฐ์ด์ ๋๋ฉด์ ๋๊ฐ ๋ช ๋ฒ ์ ๊ณ ๋นํ๋์ง ++ ํด์ค๋ค.
for(let i=0; i<whoReport[key].length; i++){
reportCount[whoReport[key][i]] ++;
}
}
for(let key in reportCount){
// k๋งํผ ๋๋ ๋ ์ ๊ณ ๋นํ ์ ์ ๋ฅผ ์ฐพ์์ ๊ทธ ์ ์ ๋ฅผ ์ ๊ณ ํ ์ ์ ๋ฉ์ผ ํ์๋ฅผ ++ ํด์ค๋ค.
if(reportCount[key] >= k){
for(let name in whoReport){
if(whoReport[name].includes(key)){
getMail[name]++;
}
}
}
}
for(let name in getMail){
// ๊ฐ ์ ์ ๊ฐ ๋ฉ์ผ ๋ฐ์ ํ์๋ฅผ pushํด์ค๋ค.
answer.push(getMail[name]);
}
return answer;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋๋ง์ ์ํธ (0) | 2023.02.02 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (0) | 2023.02.02 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ (0) | 2023.02.02 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ (2) | 2023.02.02 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ท ์์ด๋ ์ถ์ฒ (0) | 2023.02.02 |