Kakao 2022ブラインド-通報結果を受け取る
7719 ワード
KAKAO 2022 BLIND RECRUITMENT:報告結果を得る
質問アドレス:https://programmers.co.kr/learn/courses/30/lessons/92334?language=python3
難易度:体感シルバー2
1.問題の説明
2.問題を解決する考え。
3.問題の処理方法
from collections import defaultdict
report_dict = defaultdict(set) # 누가 누구를 신고했는지
report_count = defaultdict(int) # 신고를 몇번당했는지
#두개의 딕셔너리 만들었습니다. defaultdict로 구현했습니다.
#한명을 여러번 신고해도 한번으로 간주되기 때문에 set자료형을 이용할겁니다. 속도도 list에 비해 빠르기도 하고.
#report를 반복문 돌려가면서 정보를 저장해줍니다.
for case in report: # 리포트의 케이스마다
report_from, reported = case.split() # 누가 누구를 신고했는지
if reported not in report_dict[report_from]: #중복해서 신고한게 아니라면
report_dict[report_from].add(reported) #집합에 추가해줍니다.
report_count[reported] += 1 #신고당한 횟수를 1 증가시켜줍니다.
#정답을 완성시켜봅시다.
for people in id_list: #userid별로
cnt = 0
for reported in report_dict[people]: #user가 신고한 사람들 순회하면서
if report_count[reported] >= k: #그사람이 k번이상 신고당했으면
cnt += 1 #카운트 추가해줌
answer.append(cnt) #정답에 추가
4.特別注意事項
5.コード実装
def solution(id_list, report, k):
answer = []
from collections import defaultdict
report_dict = defaultdict(set) # 누가 누구를 신고했는지
report_count = defaultdict(int) # 신고를 몇번당했는지
for case in report: # 리포트의 케이스마다
report_from, reported = case.split() # 누가 누구를 신고했는지
if reported not in report_dict[report_from]:
report_dict[report_from].add(reported)
report_count[reported] += 1
for people in id_list:
cnt = 0
for reported in report_dict[people]:
if report_count[reported] >= k:
cnt += 1
answer.append(cnt)
return answer
Reference
この問題について(Kakao 2022ブラインド-通報結果を受け取る), 我々は、より多くの情報をここで見つけました https://velog.io/@qlql323/카카오-2022-블라인드-신고결과-받기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol