신고 결과 받기
첫 번째 시도
#코드
function solution(id_list, report, k) {
const usrNotifyList = {};
const uniqueReport = report.filter((el, idx) => {
return report.indexOf(el) === idx;
});
const reportLength = uniqueReport.length;
for (let i = 0; i < reportLength; i++) {
const wordsArray = uniqueReport[i].split(" ");
if (!usrNotifyList.hasOwnProperty(wordsArray[1])) {
usrNotifyList[wordsArray[1]] = [];
}
usrNotifyList[wordsArray[1]].push(wordsArray[0]);
}
const answer = new Array(id_list.length).fill(0);
for (let i in usrNotifyList) {
if (usrNotifyList[i].length >= k) {
usrNotifyList[i].forEach((el) => {
id_list.forEach((elIn, idxIn) => {
if (el === elIn) answer[idxIn]++;
});
});
}
}
return answer;
}
#결과
테스트 1 〉 통과 (0.33ms, 29.9MB)
테스트 2 〉 통과 (0.36ms, 30.1MB)
테스트 3 〉 실패 (시간 초과)
테스트 4 〉 통과 (0.44ms, 30MB)
테스트 5 〉 통과 (0.51ms, 29.9MB)
테스트 6 〉 통과 (4.24ms, 30.1MB)
테스트 7 〉 통과 (16.90ms, 31.9MB)
테스트 8 〉 통과 (40.46ms, 32.2MB)
테스트 9 〉 실패 (시간 초과)
테스트 10 〉 실패 (시간 초과)
테스트 11 〉 실패 (시간 초과)
테스트 12 〉 통과 (2.95ms, 31.9MB)
테스트 13 〉 통과 (0.75ms, 30.1MB)
테스트 14 〉 통과 (8762.07ms, 46MB)
테스트 15 〉 실패 (시간 초과)
테스트 16 〉 통과 (0.74ms, 29.8MB)
테스트 17 〉 통과 (0.74ms, 30MB)
테스트 18 〉 통과 (3.13ms, 32.6MB)
테스트 19 〉 통과 (4.56ms, 32.3MB)
테스트 20 〉 통과 (8607.96ms, 46.1MB)
테스트 21 〉 실패 (시간 초과)
테스트 22 〉 통과 (0.27ms, 29.7MB)
테스트 23 〉 통과 (0.26ms, 30MB)
테스트 24 〉 통과 (0.27ms, 30.2MB)
#Report
시간초과로 몇 가지 테스트에서 실패를 했다.
어떤 부분이 속도를 잡아 먹는지 테스트를 해보니, 배열 내의 중복된 요소를 제거하는 부분에서 시간이 오래걸렸다.
이후 이 부분을 set을 이용하여 다시 짜보니 속도가 현저히 줄어들었다.
두 번째 시도
#코드
function solution(id_list, report, k) {
const usrNotifyList = {};
const uniqueReport = [...new Set(report)];
const reportLength = uniqueReport.length;
for (let i = 0; i < reportLength; i++) {
const wordsArray = uniqueReport[i].split(" ");
if (!usrNotifyList.hasOwnProperty(wordsArray[1])) {
usrNotifyList[wordsArray[1]] = [];
}
usrNotifyList[wordsArray[1]].push(wordsArray[0]);
}
const answer = new Array(id_list.length).fill(0);
for (let i in usrNotifyList) {
if (usrNotifyList[i].length >= k) {
usrNotifyList[i].forEach((el) => {
id_list.forEach((elIn, idxIn) => {
if (el === elIn) answer[idxIn]++;
});
});
}
}
return answer;
}
#결과
테스트 1 〉 통과 (0.30ms, 30MB)
테스트 2 〉 통과 (0.19ms, 30MB)
테스트 3 〉 통과 (580.13ms, 87.6MB)
테스트 4 〉 통과 (0.23ms, 29.9MB)
테스트 5 〉 통과 (0.22ms, 29.9MB)
테스트 6 〉 통과 (1.58ms, 30.3MB)
테스트 7 〉 통과 (3.71ms, 31.9MB)
테스트 8 〉 통과 (8.33ms, 32.9MB)
테스트 9 〉 통과 (171.01ms, 57.8MB)
테스트 10 〉 통과 (62.98ms, 57.9MB)
테스트 11 〉 통과 (376.67ms, 87.6MB)
테스트 12 〉 통과 (2.74ms, 31.9MB)
테스트 13 〉 통과 (0.72ms, 30.1MB)
테스트 14 〉 통과 (264.49ms, 50.4MB)
테스트 15 〉 통과 (103.96ms, 61.3MB)
테스트 16 〉 통과 (0.71ms, 30.2MB)
테스트 17 〉 통과 (0.68ms, 30.2MB)
테스트 18 〉 통과 (2.95ms, 32.8MB)
테스트 19 〉 통과 (3.75ms, 31.8MB)
테스트 20 〉 통과 (256.35ms, 50.4MB)
테스트 21 〉 통과 (376.74ms, 62.5MB)
테스트 22 〉 통과 (0.35ms, 30MB)
테스트 23 〉 통과 (0.29ms, 30.1MB)
테스트 24 〉 통과 (0.10ms, 30MB)
#Report
구글링을 통해 찾아본 다른 코드와 비교해보니, 'map, 구조분해할당, indeOf 등' 다양한 문법들을 사용해서 풀었음을 알 수 있었다.
모두 자바스크립트를 공부하며 몇 번씩 접했던 문법들인데, 코드를 짤 때 항상 쓰는 코드만 쓰는 것 같아서 다양한 문법들을 쓰려고 의식을 하며 코드를 짜야겠다.
Author And Source
이 문제에 관하여(신고 결과 받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jthw1005/신고-결과-받기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)