Zoeeey
Stack flows in you
Zoeeey
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155)
    • ๐Ÿ’ก UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • ๐ŸŸจ JavaScript (66)
      • ๊ฐœ๋… (42)
      • ์ •๋ฆฌ (2)
      • ๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ) (15)
      • ์‘์šฉํ•˜์—ฌ ์ž๋™ํ™”or๋ฌธ์ œํ•ด๊ฒฐํ•˜๊ธฐ (2)
      • ๊ธฐํƒ€ (5)
    • โš›๏ธ React (49)
      • ๊ฐœ๋… (27)
      • ๊ฐœ๋…(Redux) (3)
      • ์ •๋ฆฌ (4)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ: React) (15)
    • ๐Ÿ“˜ TypeScript (10)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ) (2)
    • ๐ŸŒ HTML,CSS (18)
      • ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋“ค (10)
      • ๋’ค๋Šฆ๊ฒŒ ์•Œ์•„์„œ ๋ผˆ์•„ํ”ˆ ์œ ์šฉํ•œ CSS (6)
      • ๊ธฐํƒ€ ์ž์ฃผ ์“ฐ๋Š” CSS (2)
    • ๐Ÿ’ป CS (8)
      • CS (5)
      • ์ •๊ทœํ‘œํ˜„์‹ (2)
      • Git,Github (1)

ํƒœ๊ทธ

  • CSS
  • array
  • ์ฝ”๋”ฉ์• ํ”Œ
  • ์˜ค๋ฅ˜
  • useEffect
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • Ajax
  • TypeScript
  • react
  • axios
  • Props
  • json
  • JavaScript
  • state
  • object
  • UXUI
  • redux
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž
  • CS
  • class
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
hELLO ยท Designed By ์ •์ƒ์šฐ.
Zoeeey

Stack flows in you

๐ŸŸจ JavaScript/๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] 2022 KAKAO BLIND RECRUITMENT : ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

2023. 12. 11. 12:39

์‹ ์ž…์‚ฌ์› ๋ฌด์ง€๋Š” ๊ฒŒ์‹œํŒ ๋ถˆ๋Ÿ‰ ์ด์šฉ์ž๋ฅผ ์‹ ๊ณ ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ง€๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ ์œ ์ €๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์˜ ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์‹ ๊ณ  ํšŸ์ˆ˜์— ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์œ ์ €๋ฅผ ๊ณ„์†ํ•ด์„œ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•œ ์œ ์ €๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹ ๊ณ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋™์ผํ•œ ์œ ์ €์— ๋Œ€ํ•œ ์‹ ๊ณ  ํšŸ์ˆ˜๋Š” 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
    '๐ŸŸจ JavaScript/๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] PCCP ๊ธฐ์ถœ๋ฌธ์ œ 1๋ฒˆ : ๋ถ•๋Œ€ ๊ฐ๊ธฐ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ๋‹ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ๋ฐ”ํƒ•ํ™”๋ฉด ์ •๋ฆฌ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ์ถ”์–ต ์ ์ˆ˜
    Zoeeey
    Zoeeey
    ๊ธธ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์งง๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”