본문 바로가기

코테

코테 - 2022kakao - 신고 결과값 받기

일단 처음은 코드실행누르면 2개 예시값은 통과한다... 하지만 채점결과 처참...

function solution(id_list, report, k) {
    const bad = new Map()
    report.forEach((id)=>{
        let idArr = id.split(' ')
        if(!bad[idArr[1]]) {bad[idArr[1]] = [idArr[0]]}
   else if(bad[idArr[1]]!=idArr[0]){bad[idArr[1]].push(idArr[0])}
    })

  const map = new Map()
  id_list.forEach(id=>{
    const i = Array.isArray(bad[id])?bad[id]:[bad[id]]
    if(i.length>=k){
      i.forEach(id=>{
        if(map.has(id)){map.set(id,map.get(id)+1)}
        else{map.set(id,1)}
      })
    }
  })

 for(const [key,value] of map )
    id_list[id_list.indexOf(key)]=value
 id_list.forEach(id=>{
  if(typeof id ==='string'){id_list[id_list.indexOf(id)]=0}
})

    return id_list;
}

 

 

답답해서 질문하기에서 여러 힌트를 봤다. 직접 작성한 코드에서 한줄을 작성해주니 통과....

function solution(id_list, report, k) {
    const bad = new Map()
    report = [...new Set(report)]  //이줄 중복을 제거해주는 역할을 해준다!!
    
    report.forEach((id)=>{
        let idArr = id.split(' ')
        if(!bad[idArr[1]]){bad[idArr[1]] = [idArr[0]]}
        else if(bad[idArr[1]]!=idArr[0]){bad[idArr[1]].push(idArr[0])}
    })

  const map = new Map()
  id_list.forEach(id=>{
    const i = Array.isArray(bad[id])?bad[id]:[bad[id]]
    if(i.length>=k){
      i.forEach(id=>{
        if(map.has(id)){map.set(id,map.get(id)+1)}
        else{map.set(id,1)}
      })
    }

  })

  for(const [key,value] of map )
    id_list[id_list.indexOf(key)]=value
id_list.forEach(id=>{
  if(typeof id ==='string'){id_list[id_list.indexOf(id)]=0}
})

    return id_list;
}

https://school.programmers.co.kr/learn/courses/30/lessons/92334