반응형
이 문제의 input은 위와 같다.
문제 읽으며 생각한 풀이 방향성!!!!
1. 유저가 신고한 유저의 리스트를 갖는 Map 구현
2. 유저당 신고당한 count를 갖는 Map구현
이 두가지를 통해서 구현할 계획이다!
먼저 reportMap과 cntMap 두개를 만들었다.
let reportMap = {};
let cntMap = {};
report.forEach((re)=>{
const [from, to] = re.split(' ');
if(reportMap[from]){
if(!reportMap[from].includes(to)){
reportMap[from].push(to)
cntMap[to] ? cntMap[to]+=1 :cntMap[to] =1
}
}else {
reportMap[from] = [to];
cntMap[to] ? cntMap[to]+=1 :cntMap[to] =1
}
})
split함수를 통해 띄어쓰기 기준으로 잘라
이미 내가 신고했던 사람이 존재한다면 배열에도 넣지 않고, cnt를 늘리지도 않는다.
이렇게 Map을 만들면 다음과 같이 출력된다.
깔끔하게 id마다 누굴 신고했고 몇 번 신고를 당했는지 알 수 있다.
그리고 id_list로 report를 조회하여, 그 배열에 있는 id값의 cnt가 k보다 크거나 같다면 메일 수를 늘려주게 되면 된다.
return id_list.map((id)=>{
if(!reportMap[id]){
return 0
}else {
return reportMap[id].reduce((acc,curr)=>{
if(cntMap[curr] >= k) acc+=1;
return acc;
},0)
}
})
위의 사진처럼 테스트 케이스를 정상적으로 통과한 것을 볼 수 있다!
하지만 다른 사람의 풀이 결과의 속도와 비교했을 때, 내 결과가 더 느림을 확인할 수 있었다...
그렇지만 메모리에서는 더 적게 차지하는 것을 볼 수 있다.
어느 점에서 속도를 높일 수 있을 지 생각해보고 개선할 점을 생각해서 좋은 방법을 찾아봐야겠다.
반응형
'코딩테스트' 카테고리의 다른 글
Javascript / Array.shift(), Array.pop() (0) | 2023.07.01 |
---|---|
프로그래머스 LV-4 무지의 먹방 라이브 (0) | 2023.07.01 |
크레인 인형뽑기 게임 - 2019 카카오 겨울 인턴쉽 (0) | 2022.06.29 |