코딩테스트 연습 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기

이승연·2022년 5월 11일
0

코딩테스트

목록 보기
1/1

실패 코드:

def solution(id_list, report, k):
    report = set(report)
    result = [0 for _ in id_list]
    blacklist = [couple.split()[1] for couple in report]
    dup = [name for name in blacklist if blacklist.count(name) >= k]

    for couple in report:
        reporter, reportee = couple.split()
        if reportee in set(dup):
            result[id_list.index(reporter)] += 1
    return result

시간 초과가 나서 계속 탈락했다. for loop 때문에 그런 것 같아서 blacklist 부분을 딕셔너리로 변환하여 다시 코드를 짜보니 성공. for loop을 세번 쓰는 것에는 변함이 없지만 리스트를 순회하는 것보다 딕셔너리를 순회하는 것이 더 빠른듯하다.

성공코드:

def solution(id_list, report, k):
    report = set(report)
    result = [0 for _ in id_list]
    blackdict = defaultdict(int)
    for couple in report:
        blackdict[couple.split()[1]] += 1
    blacklist = []
    for key, value in blackdict.items():
        if value>=k:
            blacklist.append(key)

    for couple in report:
        reporter, reportee = couple.split()
        if reportee in set(blacklist):
            result[id_list.index(reporter)] += 1
    return result

0개의 댓글