https://school.programmers.co.kr/learn/courses/30/lessons/92334
문제설명
신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.
각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
- 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
- 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
- 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.
문제 해결 방법
해시를 통해 문제를 해결함
코드 구현
def solution(id_list, report, k):
answer = []
singoList = { }
amISingo = { }
for i in id_list:
if i in singoList:
continue
else:
singoList[i] = []
amISingo[i] = 0
for i in report:
tmpList = i.split(" ")
if tmpList[0] in singoList:
key = tmpList[0]
values = singoList.get(key)
if tmpList[1] in values:
continue
else:
singoList[key].append(tmpList[1])
for i in singoList:
tmpList = singoList[i]
if len(tmpList) > 0:
for j in tmpList:
if j in amISingo:
amISingo[j]+=1
else:
continue
realSingoMan = []
for i in amISingo:
if amISingo[i] >=k:
realSingoMan.append(i)
for i in singoList:
tmpValue = singoList[i]
cnt = 0
for j in tmpValue:
if j in realSingoMan:
cnt+=1
answer.append(cnt)
cnt=0
return answer
시간/공간 복잡도
O(N^2)
최적화 및 개선
따로 하지 않음
어려웠던 점
없음
'코딩테스트 > 문제 풀이 - Python' 카테고리의 다른 글
[프로그래머스 lv2]예상 대진표 (0) | 2024.03.19 |
---|---|
[프로그래머스 lv2]메뉴 리뉴얼 (1) | 2024.03.18 |
[프로그래머스 lv3]베스트 앨범 (2) | 2024.03.14 |
[프로그래머스 lv2]오픈채팅방 (0) | 2024.03.14 |
[프로그래머스 lv2]할인 행사 (0) | 2024.03.12 |