본문 바로가기
Algorithm/구현

[프로그래머스 lv 1] 신고 결과 받기

by HANNI하니 2023. 5. 15.

사용 언어 - Python3

문제 - 신고 결과 받기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답

defaultdict 이용한 딕셔너리 구현 (정답 맞춘 여부 X)

user = {신고한 사람 : 신고 받은 사람들}

cnt = {신고 받은 사람 : 신고 받은 횟수}

딕셔너리로 저장

id_list 별로 한개씩 확인,

user 딕셔너리에서 id 확인해 신고받은 사람들의 신고횟수가 k이상인 경우, result += 1

 

# defaultdict = dict 입력형식 지정 set or int
from collections import defaultdict

def solution(id_list,report,k):
    answer = []
    
    report = list(set(report)) #report 중복제거
    user = defaultdict(set) #신고한 id : 신고받은 id
    cnt = defaultdict(int) #신고한 사람별 신고 횟수
    
    for r in report:
        a,b = r.split() #신고 한 사람, 신고 받은 사람
        user[a].add(b) # {신고한 사람 : 신고 받은 사람들}
        cnt[b] += 1 # {신고받은 사람 : 신고 받은 횟수}
        
    for i in id_list:
        result = 0
        for u in user[i]: #id별
            if cnt[u] >= k: #id별 신고횟수 조사
                result += 1
        answer.append(result)
        
    return answer

 

 

레퍼런스

  • from collections import defaultdict
 

[파이썬 기초] 유사 딕셔너리 defaultdict() 활용법

defaultdict()는 딕셔너리를 만드는 dict클래스의 서브클래스이다. 작동하는 방식은 거의 동일한데, defaultdict()는 인자로 주어진 객체(default-factory)의 기본값을 딕셔너리값의 초깃값으로 지정할 수 있

dongdongfather.tistory.com

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글