반응형
카카오 문제는 막 어렵기도 전에 문제가 넘 길다.
하지만 문해력도 실력인걸?
알고리즘 공부한지 오래됐으니 이제 슬슬 감을 잡기 위해 하루에 한문제씩 풀어야겠다.
파이썬 넘나 오랜만.
def solution(id_list, report, k):
answer = []
stopped = set([])
dic = {i: {"report_user": set([]), "reported": 0} for i in id_list}
for data in report :
[report_from, report_to] = data.split(' ')
if(report_to not in dic[report_from]["report_user"]) :
dic[report_from]["report_user"].add(report_to)
dic[report_to]["reported"] += 1
for key in dic:
if dic[key]["reported"] >= k :
stopped.add(key)
for key in dic:
answer.append(len(dic[key]["report_user"] & stopped))
return answer
어떤사람 코드 보니까 12줄만에 풀었던데 ㅠㅠ (물론 가독성이 엄청 좋은건 아님)
나도 파이썬 익숙해져서 줄일 수 있으면 좋겠다.
살짝 개선한 코드
def solution(id_list, report, k):
answer = []
stopped = set([])
dic = {i: {"report_user": set([]), "reported": 0} for i in id_list}
report_set = set(report)
for data in report_set :
[report_from, report_to] = data.split(' ')
dic[report_from]["report_user"].add(report_to)
dic[report_to]["reported"] += 1
for key in dic:
if dic[key]["reported"] >= k :
stopped.add(key)
for key in dic:
answer.append(len(dic[key]["report_user"] & stopped))
return answer
report를 set으로 변환하니까 문제의 조건 중 한 사람이 중복 신고한 건은 1개로 간주한다는 것을 해결할 수 있었다.
if문 하나를 줄일 수 있는 방법이었다.
반응형
'알고리즘 | Algorithm' 카테고리의 다른 글
프로그래머스 | 2022 KAKAO BLIND RECRUITMENT > 주차 요금 계산 - 파이썬 (0) | 2022.05.10 |
---|---|
프로그래머스 | 2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기 - 파이썬 (0) | 2022.04.13 |
[LeetCode 리트코드] Longest Palindromic Substring | Python3 파이썬 (0) | 2021.02.15 |
[LeetCode 리트코드] Max Number of K-Sum Pairs, python (0) | 2021.01.18 |
[LeetCode 리트코드] Add Two Numbers, python 파이썬 (0) | 2021.01.12 |