프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

  • 유저가 신고한 사용자 정보를 저장하는 대신, 유저를 신고한 사용자 정보를 저장했다.
def solution(id_list, report, k):
    # 사용자를 신고한 유저
    user_report = {}
    report = list(set(report))
    # 신고 처리
    for i in report:
        a, b = i.split(" ")
        # 신고 처리
        if b not in user_report:
            user_report[b] = set()
        user_report[b].add(a)
    # 메일 개수
    mail_cnt = dict(zip(id_list, [0] * len(id_list)))
    for uid, u_list in user_report.items():
        if len(u_list) >= k:
            # 해당 유저를 신고한 유저 모음
            for u in u_list:
                mail_cnt[u] += 1
    answer = []
    for u in id_list:
        answer.append(mail_cnt[u])
        
    return answer

다른 사람 풀이

  • [ic]index[/ic] 함수를 사용해 id_list 순서를 맞췄다.
def solution(id_list, report, k):
    answer = [0] * len(id_list)
    dic_report = {id: [] for id in id_list} # 해당 유저를 신고한 ID
    for i in set(report):
        i = i.split()
        dic_report[i[1]].append(i[0])

    for key, value in dic_report.items():
        if len(value) >= k:
            for j in value:
                answer[id_list.index(j)] += 1

    return answer
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr