일단 처음은 코드실행누르면 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
'코테' 카테고리의 다른 글
코테 - 연습문제 - 최소값 만들기 (0) | 2023.07.03 |
---|---|
코테 - 2023kakao Blind - 개인정보 수집기간 (0) | 2023.06.27 |
코테 - 행렬 - 덧셈 (0) | 2023.06.21 |
코테 - 연습문제 - 카드뭉치 (0) | 2023.06.19 |
코테 - 완전탐색 - 최소 직사각형 (0) | 2023.06.15 |