신고 결과 받기 - javascript
문제 (출처)
👉 https://programmers.co.kr/learn/courses/30/lessons/92334
나의 접근
-
코테 4번째 문제만의 큰 난관에 봉착했다 ㅎㄷㄷ 하지만 나름 유추 한걸 적어본다.
-
"한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다." 라는 문제 설명을 보고 report array를 set로 만들면 중복이 제거되겠다 라는 생각
-
report를 split함수로 나누어 따로 저장해야겠다는 생각
-
계속 고민을 하다 풀이를 검색하고 그 풀이를 내것으로 만들자는 생각 하고 풀이를 보았지만, 그것마저도 이해하기 어려웠다!!
-
차곡차곡 쌓아 나중에 이글을 봤을때는 엄청 쉬운문제였잖아 할 수 있는 날이 오기를 기대하며 풀이로 넘어간드아~
풀이
function solution(id_list, report, k) {
let reportObj = new Map();
id_list.forEach((val) => {
return (reportObj[val] = {
report: [],
reported: 0,
isStoppedId: false,
});
});
report.forEach((val) => {
let [reportPerson, reportedPerson] = val.split(' ');
if (reportObj[reportPerson].report.indexOf(reportedPerson) === -1) {
reportObj[reportPerson].report.push(reportedPerson);
reportObj[reportedPerson].reported++
if (reportObj[reportedPerson].reported >= k) {
reportObj[reportedPerson].isStoppedId = true;
}
}
});
let sendMail = id_list.map((val) => {
return reportObj[val].report.filter((reportId) => reportObj[reportId].isStoppedId).length;
});
return sendMail;
}
오늘의 배운점 및 교훈
- 자료구조 map의 사용성에 대해 알수 있었다. 원래는 id_list별로 array변수를 만들어서 넣어야하나? 라고 고민해었는데 아주 간편하게 처리 할 수있게 되었다.
사실 아직은 어색하지만 앞으로 코테 준비할때 의도적으로라도 써봐야겠다. 앞으로 친하게 지내자 ... - map() 와 forEach() 차이점에 대해 알게되었다. 쉽게 생각해서 map()은 실행결과를 모은 새로운 배열을 리턴해준다로 생각하겠다. 우선은...
- indexOf()의 사용법도 알게되었다.
- filter()는 가끔 썼지만... 쓸때마다 햇갈린다... 하지만 반복만이 익숙해진다라는 생각으로 계속해서 해봐야겠다 .
- 이번 문제는 카카오 2022년 문제 답게 어려웠지만, 내년에 이글을 봤을때는 아주 평이하네 라는 생각이 들면 좋겠다 ㅋㅋ
Author And Source
이 문제에 관하여(신고 결과 받기 - javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@donq/신고-결과-받기-javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)