반응형
📖 문제
📃 코드
import collections
# id_list = ["muzi", "frodo", "apeach", "neo"]
# report = ["muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"]
# k = 2
def solution(id_list, report, k):
answer = []
# remove repeated report
report = list(set(report))
# prevent duplicated reported user name
reportHash = collections.defaultdict(set)
# counting how many reported user
stopped = collections.defaultdict(int)
for x in report:
# x = "muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"
a, b = x.split(' ')
# a = muzi, b = frodo ...
reportHash[a].add(b)
# reportHash = {'frodo': {'neo'}, 'muzi': {'neo', 'frodo'}, 'apeach': {'frodo', 'muzi'}})
stopped[b] += 1
# stopped = {'neo': 2, 'frodo': 2, 'muzi': 1})
# if report counting >= k, user is Finally stopped & mail to report user
for name in id_list:
# name = "muzi", "frodo", "apeach", "neo"
mail = 0
for reported_user in reportHash[name]:
# reported_user = 'neo'..., value is possible multi values
if stopped[reported_user] >= k:
# stopped[reported_user] mean = how many noe is reported?
mail += 1
# for each names
answer.append(mail)
return answer
✔️ 복습
import collections
def solution(id_list, report, k):
answer = []
report = list(set(report))
reportHash = collections.defaultdict(set)
stopped = collections.defaultdict(int)
for idx, value in enumerate(report):
reporter, reported = value.split()
reportHash[reporter].add(reported)
stopped[reported] += 1
for name in id_list:
mail = 0
for reported in reportHash[name]:
if stopped[reported] >= k:
mail += 1
answer.append(mail)
return answer
🗝️ 요약
[개념]
키와 밸류가 한쌍인 자료구조가 필요한 경우에 Hash를 사용한다.
Python에서는 Dictionary인 Collections.Defaultdict()를 사용한다.
Collections.Defaultdict(set)은 Dictionary의 생성자를 set으로 생성한다.
[활용]
문자열이나, 문자를 키로 하고 거기에 대응되는 밸류 값을 한 쌍의 정보로서 저장 -> 해쉬
문자(어떤 자료형이든 가능)나 문자열을 빈도수 카운팅 할 때,
문자열을 키로 해서 자료구조를 대응시킬 때 해쉬를 이용
'Study & Project ✏️ > 프로그래머스 PCCP 공부 📅' 카테고리의 다른 글
[프로그래머스] BFS 복습 및 실습문제(송아지 찾기) 풀이 - 파이썬 (0) | 2022.11.12 |
---|---|
[프로그래머스] DFS 복습 및 실습문제(피로도) 풀이 - 파이썬 (0) | 2022.11.12 |
[프로그래머스] Sorting&Greedy 복습 및 실습문제(단속카메라) 풀이 - 파이썬 (0) | 2022.11.12 |
[프로그래머스] Two pointers 복습 및 실습문제(보석쇼핑) 풀이 - 파이썬 (0) | 2022.11.10 |
[프로그래머스] Array 자료구조 복습 및 실습문제(주차 요금 계산) 풀이 - 파이썬 (0) | 2022.11.09 |