알고리즘문제

프로그래머스 > 신고 결과 받기

단점이없어지고싶은개발자 2022. 10. 14. 19:30
반응형

1. 나와있는 테스트케이스만 통과하고 나머지는 실패했다. 

2. 로직을 너무 복잡하게 짰다. 아래 블로그 글을 참조해서 문제를 풀었다.

 

function solution(id_list, report, k) {
    const answer = new Array(id_list.length);
    answer.fill(0);
    const reportList = {};
    
    id_list.map((user) => {
        reportList[user] = [];
        //나는 배열이 아닌 원시값을 통해 count로 접근했는데 이렇게 되면 아래 로직에서 중복값을 자동제거 가능하다.
    })
    
    report.map((user) => {
        const [userId, reportId] = user.split(" ");
        //slice, indexOf를 통해 문자열을 잘랐는데, 이렇게 자르면 key와 value로 진행시킬 수 있다.
        
        if (!reportList[reportId].includes(userId)) {
        //중복된 신고는 하지 못하기 때문에 중복된 값이 빼고 reportId = [userID] 형태로 push
            reportList[reportId].push(userId);
        }
    });
    
    for (const key in reportList) {
        if (reportList[key].length >= k) {
            reportList[key].map((user) => {
            //k만큼 신고수가 넘었다면 answer에 += 1씩 더해준다. 만약 없더라도 이미 위에서 0으로 초기값 설정
                answer[id_list.indexOf(user)] += 1;
            })
        }
    }

    return answer;
}

 


https://velog.io/@dnjsdud2257/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%8B%A0%EA%B3%A0-%EA%B2%B0%EA%B3%BC-%EB%B0%9B%EA%B8%B0-JavaScript

 

코딩테스트 - 신고 결과 받기 JavaScript

신고 결과 받기 프로그래머스 Lv1 JS 문제 풀이

velog.io

 

반응형