반응형
스타의 풀이
def solution(id_list, report, k):
answer = [0] * len(id_list)
reports = {x : 0 for x in id_list}
for r in set(report):
reports[r.split()[1]] += 1
for r in set(report):
if reports[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
나의 코드
from dataclasses import dataclass
from typing import List, TypeVar
T = TypeVar('T')
@dataclass
class User:
id: str
targets: List[T]
report_count: int = 0
def __init__(self, id):
self.id = id
self.targets = list()
def report_count_increment(self):
self.report_count += 1
def append_target(self, user: T):
self.targets.append(user)
def is_out(self, k: int) -> bool:
if self.report_count >= k:
return True
return False
def solution(id_list, report, k):
answer = []
users = list()
report = set(report)
for id in id_list:
users.append(User(id=id))
for re in report:
splited_report = re.split(' ')
user = get_user_by_id(users, splited_report[0])
target = get_user_by_id(users, splited_report[1])
target.report_count_increment()
user.append_target(target)
for user in users:
cnt = 0
for target in user.targets:
if target.is_out(k):
cnt += 1
answer.append(cnt)
return answer
def get_user_by_id(users: List[User], id: str):
for user in users:
if user.id == id:
return user
느낀 점
더보기
find처럼 특정 키워드를 가지고 인덱스를 가져오는 list.index() 메소드에 대해서 새롭게 배웠다.
반응형
'프로그래머스' 카테고리의 다른 글
프로그래머스 '두 수의 차' 문제풀이(PYTHON) - Henry's Algorithm (0) | 2022.10.12 |
---|---|
프로그래머스 '두 수의 합' 문제풀이(PYTHON) - Henry's Algorithm (2) | 2022.10.11 |
프로그래머스 '프린터' 문제풀이(JAVA) - Henry's Algorithm (0) | 2021.10.11 |
프로그래머스 '기능개발' 문제풀이(JAVA) - Henry's Algorithm (0) | 2021.10.10 |
프로그래머스 '완주하지 못한 선수' 문제풀이(JAVA) - Henry's Algorithm (0) | 2021.10.06 |