코딩테스트/Programmers

신고 결과 받기 (JS)

동띵 2025. 1. 7. 21:36

https://school.programmers.co.kr/learn/courses/30/lessons/92334

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

function solution(id_list, report, k) {
    const answer = [];
    const reporterMap = {}; // 각 유저가 신고한 사용자를 저장
    const reportedMap = {}; // 각 유저가 신고당한 횟수를 저장

    // 초기화: 모든 유저에 대해 빈 배열 및 0으로 설정
    id_list.forEach(id => reporterMap[id] = []);
    id_list.forEach(id => reportedMap[id] = 0);
    
    // 신고 처리
    report.forEach(entry => {
        const [reporter, reported] = entry.split(' ');

        // 동일 유저가 같은 사람을 여러 번 신고한 경우는 한 번만 카운트
        if (!reporterMap[reporter].includes(reported)) {
            reporterMap[reporter].push(reported); // 신고 추가
            reportedMap[reported]++;             // 신고당한 횟수 증가
        }
    });

    // 결과 계산
    id_list.forEach(id => {
        let cnt = 0;

        // 유저가 신고한 사람 중 이용 정지 당한 사람만 카운트
        reporterMap[id].forEach(reportedId => {
            if (reportedMap[reportedId] >= k) {
                cnt++;
            }
        });

        answer.push(cnt);
    });

    return answer;
}

'코딩테스트 > Programmers' 카테고리의 다른 글

베스트 앨범 (JS)  (1) 2025.01.06
오픈 채팅방 (JS)  (1) 2025.01.06
표 편집 (JS)  (1) 2025.01.05
크레인 인형 뽑기 (JS)  (0) 2025.01.05
방문 길이 (JS)  (0) 2025.01.05