๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ (92334)

๋ฌธ์ œ ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

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

programmers.co.kr

 

์ ‘๊ทผ๋ฐฉ๋ฒ•

 

1. ๋จผ์ € user list๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” id_list๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ user์˜ ๊ธธ์ด์™€ ๊ฐ™์€ ๋นˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ’์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

 

2. ์‹ ๊ณ ํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„๊ณผ ์‹ ๊ณ ๋ฐ›์€ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ key์™€ value๋กœ ๊ฐ–๋Š” reportObj ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

3. report๋กœ ๋ฐ›์€ ์‹ ๊ณ  ๋‚ด์—ญ์€ ๊ฐ ๋ฐฐ์—ด์˜ ๊ฐ’์ด " "์„ ํ†ตํ•ด ๊ตฌ๋ถ„๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ userId(์œ ์ € ์ด๋ฆ„), reportId(์‹ ๊ณ ๋ฐ›์€ ์œ ์ €์ด๋ฆ„)์œผ๋กœ ๋‚˜๋ˆ„๊ณ 

๋งŒ์•ฝ reportObj์˜ ํ‚ค(์‹ ๊ณ ๋ฐ›์€ ์‚ฌ๋žŒ)์˜ value๊ฐ€ userId๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด reportObj[์‹ ๊ณ ๋ฐ›์€์‚ฌ๋žŒ]์— ์‹ ๊ณ ํ•œ ์‚ฌ๋žŒ(userId)๋ฅผ push ํ•ฉ๋‹ˆ๋‹ค.

 

4. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ reportObj (key : ์‹ ๊ณ ๋ฐ›์€์‚ฌ๋žŒ, value : ์‹ ๊ณ ํ•œ์‚ฌ๋žŒ)์„ ํ†ตํ•ด value์˜ ๊ธธ์ด๊ฐ€ k(์ •์ง€์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ์ˆ˜)์ด์ƒ์ผ๋•Œ reportObj[์‹ ๊ณ ๋ฐ›์€์‚ฌ๋žŒ]์˜ value๋ฅผ map์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ

id_list.indexOf(user) ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ˆœ์„œ์— ๋งž๋Š” ์œ„์น˜์— +1์„ ํ•˜์—ฌ ์ •๋‹ต๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

function solution(id_list, report, k) {
  const answer = new Array(id_list.length)
  answer.fill(0);
  const reportObj = {}

  id_list.map((user) => reportObj[user] = []);

  report.map((report) => {
      const [userId, reportId] = report.split(' ');
      if(!reportObj[reportId].includes(userId)){
          reportObj[reportId].push(userId)
      }
  })

  for(const key in reportObj){
      if(reportObj[key].length >= k){
          reportObj[key].map((user)=>{
              answer[id_list.indexOf(user)] += 1
          })
      }
  }
  return answer;
}