반응형
파이썬으로 코딩테스트 연습 :: 프로그래머스 > 신고 결과 받기
https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
Solution
def solution(id_list, report, k):
report = set(report)
answer = {x:0 for x in id_list} # 메일 보낼 횟수
reports = {x:0 for x in id_list} # 신고 당한 횟수
for x in report :
reports[x.split()[1]]+=1
for x in report : # 신고당한 횟수가 k 보다 크면 신고한 사람 메일 보낼 횟수 1 추가
if reports[x.split()[1]] >= k :
answer[x.split()[0]] +=1
return list(answer.values())
입력으로 받는 id_list, report, k는 예시와 같은 값으로 설명한다.
id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi", "muzi frodo"]
k=2
먼저, 한 유저는 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리된다는 조건이 있으므로 report = set(report)로 중복되는 값은 제거한다.
다음으로 각 유저별 메일 보낼 횟수와 신고당한 횟수를 dictionary형태로 생성한다. 초기값은 0으로 세팅한다.
이제 신고당한 횟수를 for문으로 업데이트해준다.
마지막으로 신고당한 횟수가 k번 이상인 유저에 대해 메일보낼 횟수를 업데이트해준다.
for문과 if문으로 간략하게 짤 수있다.
answer의 결과를 values()만 뽑아 list 형태로 반환한다.
반응형
'코딩테스트 연습 > 프로그래머스' 카테고리의 다른 글
[Python - 프로그래머스] 2021 KAKAO BLIND RECRUITMENT > 신규 아이디 추천 (0) | 2022.03.17 |
---|---|
[Python - 프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2022.03.16 |
[프로그래머스 - Python] 전화번호 목록 (0) | 2022.03.11 |
[프로그래머스 - Python] 완주하지 못한 선수 (0) | 2022.03.11 |
[프로그래머스 - Python] 코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 삼각 달팽이 in python (0) | 2021.01.19 |