티스토리 뷰

문제 설명

 

 

 

처음 생각한 풀이

1. 유저의 신고 당한 횟수를 담는 딕셔너리를 만든다.

2. report를 돌면서 신고 당한 횟수를 딕셔너리에 저장하고, 횟수가 k번 이상일 경우, 블랙 리스트에 추가한다.

3. report를 다시 돌면서 신고 당한 사람이 블랙 리스트에 속해 있다면, 그 사람을 신고 한사람을 다시 신고자 리스트에 추가한다.

4. id_list를 돌면서 해당 이름이 신고자 리스트에 몇개 있는지 count 해서 세본다.

 

결과

시간 초과가 떴습니다..

report의 길이가 200000 이하였기 때문에

report를 돌면서 신고 당한 사람이 블랙리스트에 속해 있는지 확인하는 부분에서 시간이 오바된 것 같았습니다.

 

다시 생각한 풀이

우선, 신고 당한 사람이 블랙 리스트에 속해 있는지 확인 하는 과정을 없애고 싶었기 때문에,

처음에 횟수를 담기 위해서 돌 때, 신고자까지 기억을 해야겠다고 생각했습니다.

그래서 딕셔너리를 하나 더 추가했습니다!

 

1. 유저의 신고 당한 횟수를 담는 딕셔너리, 해당 유저를 신고 한 유저들을 담는 딕셔너리를 만든다.

2. report를 돌면서 유저의 신고 당한 횟수를 딕셔너리에 저장하고, 그 유저를 신고한 신고자들 또한 딕셔너리에 리스트 형태로 저장한다.

3. 그렇게 횟수가 k번이상일 경우 블랙 리스트에 추가한다.

4. 받을 결과 메일의 수를 담는 딕셔너리를 하나 더 만든다.

5. 유저를 신고한 신고자 정보가 담긴 딕셔너리에 블랙 리스트 값(키)을 넣어서 신고자들이 담긴 리스트를 돌면서 받을 메일 수를 count한다. (조금 복잡하게 푼듯)

6. 정답 배열에 id_list 순서대로 받을 결과 메일의 수를 담은 딕셔너리에 접근해서 메일 수를 추가한다.

 

def solution(id_list, report, k):
    report_dic = {}     # 신고 횟수를 담은 딕셔너리
    mail_dic = {}       # 해당 유저를 신고한 신고자를 담은 딕셔너리
    mail_count_dic = {} # 받을 결과 메일 수를 담은 딕셔너리
    answer = []         # 정답 리스트
    black_list = []     # 차단당한 유저를 담은 리스트
    
    # 중복 신고 제거
    report = list(set(report))

    # 딕셔너리 초기화
    for i in range(len(id_list)):
        report_dic[id_list[i]] = 0
        mail_dic[id_list[i]] = []
        mail_count_dic[id_list[i]] = 0
    
    # 신고 당한 횟수 기록, 신고자도 같이 기록
    for i in range(len(report)):
        info = report[i].split(" ")
        report_dic[info[1]] += 1
        mail_dic[info[1]].append(info[0])
        if report_dic[info[1]] >= k:
            black_list.append(info[1])
    
    black_list = list(set(black_list))
    
    # 신고자가 받을 메일 횟수 계산
    for black in black_list:
        for i in range(len(mail_dic[black])):
            mail_count_dic[mail_dic[black][i]] += 1
    
    for i in range(len(id_list)):
        answer.append(mail_count_dic[id_list[i]])
        
    return answer

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함