문제말고 공부 기록만 올린다!
구성해야할 부분을 먼저 정리해보자
1. 유저는 한번에 한명의 유저를 신고할 수 있다
2. 신고횟수는 제한이 없다.
3. 한 유저를 여러번 신고가 가능하지만, 동일 유저 신고횟수는 1회로 처리
4. K번 이상 신고된 유저는 게시판 이용이 정지됨
5. 해당 유저를 신고한 모든 유저에게 정지 사실 메일로 발송
기본적으로 알고 지나가야할 부분
defaultdic , dictionary 가 있는데 둘의 차이를 알고 사용해보자
사용해야하는 이유는 유저의 id와 신고당한 사람의 id를 하나로 연결해두어야기 때문에 우리는 key, value 값을 연결해 주어야함
defaultdic은 dict의 차이가 뭘까?
# dictionary를 사용할 경우 KeyError 에 대해서 except 하는 부분이 필요하다
# key 값이 없거나 없는 key를 조작하려고 할 때 keyerror가 발생
dict_by_count = dict()
for i in dict_example:
t, z = i[0:2]
try:
dict_by_count[z].append(t)
except KeyError:
dict_by_count[z] = [t]
from collections import defaultdict
dict_by_count = defaultdict(list) # int, float, set , list 자료형,자료구조 모두가능
for i in dict_example:
t, z = i[0:2]
dict_by_count[z].append(t)
위에서 생각한 구성해야할 부분을 좀 더 구체적으로 아아니 코딩적으로 고민해보는 시간
1. 유저는 한번에 한명의 유저를 신고할 수 있다
2. 신고횟수는 제한이 없다.
3. 한 유저를 여러번 신고가 가능하지만, 동일 유저 신고횟수는 1회로 처리
나는 너무 어렵게 생각했나보다!!
다른 사람 풀이를 보니,,,,,
# id_list = ["muzi", "frodo", "apeach", "neo"]
def solution(id_list, report, k):
answer = [0] * len(id_list) # id_list 크기만큼 0 list 생성 [0, 0, 0, 0]
reports = {x : 0 for x in id_list} # {'muzi': 0, 'frodo': 0, 'apeach': 0, 'neo': 0}
for r in set(report):
reports[r.split()[1]] += 1
# {'muzi': 1, 'frodo': 2, 'apeach': 0, 'neo': 2} 각각 몇번 신고 당했는지
for r in set(report):
if reports[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer # 메일 각 User 당 몇번 받았는지