문제
- 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
- 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
- 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
- k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
- 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.
신고자에게 정지당한 유저에 대한 메일 발송 횟수를 리스트에 담아 반환하는 문제
풀이 과정
- 제한시간이 주어졌으므로 리스트보다는 시간복잡도가 낮은 딕셔너리 사용
- 신고 중복은 set으로 해결
- 각 id 별 신고 당한 횟수 저장
- K번 이상 신고 당한 사람이 있으면 send_mail에 해당 신고자 키 값에 +1
코드
def solution(id_list, report, k):
report_list = {id : 0 for id in id_list} # 신고 당한 사람
send_mail = {id : 0 for id in id_list} # 메일 발송
report = list(set(report)) # 신고 중복 제거
for i in report:
_, id = i.split(" ")
report_list[id] = report_list[id] + 1
for i in report:
r, id = i.split(" ")
if report_list[id] >= k:
send_mail[r] = send_mail[r] + 1
return list(send_mail.values())
'코딩 테스트 > Lv.1' 카테고리의 다른 글
[프로그래머스] 햄버거 만들기 with Kotlin (0) | 2023.11.06 |
---|---|
[프로그래머스] 바탕화면 정리 with Kotlin (0) | 2023.11.06 |
[프로그래머스] 달리기 경주 with Python (0) | 2023.11.04 |
[프로그래머스] 개인 정보 수집 유효기간 with Python (1) | 2023.11.04 |
[프로그래머스] 신규 아이디 추천 with Python (0) | 2023.11.04 |