[Python][2022 KAKAO] 프로그래머스 신고 결과 받기 - 92334
출처
https://programmers.co.kr/learn/courses/30/lessons/92334
중복을 제거하고 딕셔너리를 활용하면 코드를 간단하게 작성하여 풀이할 수 있는 문제였다.
소스코드
def solution(id_list, report, k):
answer = [0] * len(id_list)
cnt = {x:0 for x in id_list}
for i in set(report):
cnt[i.split()[1]] += 1
for i in set(report):
if cnt[i.split()[1]] >= k:
answer[id_list.index(i.split()[0])] += 1
return answer
풀이
문제가 조금 길지만 읽어보면 어려운 조건은 없지만 풀이할 때 필요한 개념을 살펴보면
- 동일한 유저가 한 사람을 여러번 신고하여도 1회로 처리됨
- Set을 이용하여 중복을 없애면 쉽게 처리 가능함
- 딕셔너리를 활용해 유저들이 몇 번 신고당했는지 cnt에 정리
- {x:0 for x in id_list} - 각 id_list를 key로 하여 0으로 초기화
- split을 통해 report를 나누고 신고받은 유저의 키( cnt[i,split()[1]] )를 이용해 cnt를 1 증가시킨다.
- 모든 cnt를 정리하고 다음 반복문을 통해 처리 결과 메일을 받을 횟수를 answer에 담음
- answer[id_list.index(i.split()[0])]로 id_list의 인덱스 값에 1을 더함
answer를 return 하면 풀이는 끝입니다.
풀이 결과
'알고리즘' 카테고리의 다른 글
백준-BOJ 1920번 수 찾기 파이썬 풀이 (0) | 2022.07.26 |
---|---|
[프로그래머스][Python] - 모의고사 (0) | 2022.07.10 |
백준 11057번 오르막 수 파이썬 풀이 (0) | 2022.04.24 |
백준 14490번 백대열 파이썬 풀이 (0) | 2022.04.21 |
백준 3036번 링 파이썬 풀이 (0) | 2022.04.20 |