🤔 문제
https://programmers.co.kr/learn/courses/30/lessons/92334
😀 풀이
위 문제는 report의 크기를 고려해보았을 때 단순 배열을 사용하면 시간이 모자랄 수 있을 것이라 예상할 수 있습니다. 따라서 신고 내역을 Python의 dict 자료형으로 다루어 풀이를 진행했습니다.
신고 내역을 다루는 dict 자료형의 key 값은 신고당한 유저, value 값은 신고한 유저들로 정했습니다.
또한 문제 조건에 따라 신고하는 유저는 동일 유저를 여러 번 신고할 수 없고 여러 번 신고한다면 한 번으로 처리해야 하여 신고한 유저들을 다루는 자료형은 Set을 사용했습니다.
적절한 자료구조 선택과 key, value값 구성만 생각해내면 그 이후론 구현이 어렵지않습니다.
💻 풀이 코드는 아래와 같습니다.
def solution(id_list, report, k):
# Python 3.6에서부터는 dict 자료형이 순서를 유지해 answer를 아래와 같이 사용할 수 있습니다.
answer = { id : 0 for id in id_list }
report_dict = { id : set() for id in id_list }
for r in report:
report_user, reported_user = r.split(' ')
report_dict[reported_user].add(report_user)
for key, value in report_dict.items():
if len(value) >= k:
for v in value:
answer[v] += 1
return list(answer.values())
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 표 편집 - Python (1) | 2022.01.21 |
---|---|
[프로그래머스] 양궁대회 - Python (1) | 2022.01.21 |
[프로그래머스] 합승 택시 요금 - Python (0) | 2022.01.15 |
[프로그래머스] 거리두기 확인하기 - Python (0) | 2022.01.13 |
[프로그래머스] 키패드 누르기 - Python (0) | 2022.01.12 |