from collections import defaultdict
def solution(id_list, report, k):
answer = []
#{신고 당한 애 : 신고당한 애한테 신고를 한 애들 목록}
reportA = defaultdict(set)
#{신고한 애: 신고한 애가 신고한 애들}
reportB = defaultdict(set)
#신고 목록 공복을 기준으로 신고한 사람(a) 신고 당한 사람(b)
for i in report:
a, b = i.split(" ")
reportA[b].add(a)
reportB[a].add(b)
#모든 회원을 돌아가며 확인하는 작업
for id in id_list:
cnt = 0
#신고한 사람이 K명이 넘을 때 cnt + 1 증가
for i in reportB[id]:
if len(reportA[i]) >= k:
cnt += 1
answer.append(cnt)
return answer
[메모]
- defaultdict()
- 딕셔너리를 만드는 dict클래스의 서브 클래스이다.
- 숫자, 리스트, 셋 등으로 초기화를 할 수 있다.
- 기본값을 자동으로 넣어준다. (기본 dictionary의 경우엔 기본값을 직접 설정해주어야 한다.)
- int_dict = defaultdict(int)
- default 값이 int인 딕셔너리
- add( ), append( ), extend( ), insert( )
- add( ) - set(집합)의 원소 추가에 사용한다.
- append처럼 array 배열의 맨 뒤에 원소를 추가해준다.
- append( ) - array 배열의 맨 뒤에 객체로 추가해준다.
- extend( ) - iterable 자료형에 사용한다.
- insert( )
- array.insert(i, x) - 위치 i 앞에 추가할 값 x를 삽입 시킨다.
- add( ) - set(집합)의 원소 추가에 사용한다.
- 자바의 Map이 파이썬의 dictionary 개념이다.( {키:값}으로 구성되고 키는 중복허용 X 값은 중복 허용 O)
- 신고 당한 사람들의 목록을 돌면서 신고당한 사람을 신고한 사람이 k명 이상일 때 cnt를 +1 해준다.!!
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Lv1] - 약수의 합(파이썬/Python) (0) | 2022.07.09 |
---|---|
[프로그래머스] - 약수의 개수와 덧셈(파이썬/Python) (0) | 2022.07.09 |
[프로그래머스][Lv2] - 카펫(파이썬/Python) (0) | 2022.01.21 |
[프로그래머스][Lv1] - 수식 최대화(파이썬/Python) (0) | 2022.01.01 |
[프로그래머스][Lv2] - 소수 찾기(파이썬/Python) (0) | 2022.01.01 |