๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] [2022 kakao blind recruitment] [Python] Level1_์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

Dbswnstjd 2022. 2. 25. 22:19

https://programmers.co.kr/learn/courses/30/lessons/92334

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

๋ฌธ์ œ ์„ค๋ช… ์‹ ์ž…์‚ฌ์› ๋ฌด์ง€๋Š” ๊ฒŒ์‹œํŒ ๋ถˆ๋Ÿ‰ ์ด์šฉ์ž๋ฅผ ์‹ ๊ณ ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ง€๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ ์œ ์ €๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์˜

programmers.co.kr

ํ’€์ด 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 1๋‹จ๊ณ„ - ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ
from collections import defaultdict
def solution(id_list, report, k):
    answer = [0] * len(id_list)
    
    report = set(report)

    user_report = defaultdict(set) # ์‹ ๊ณ ๋ฅผ ํ•œ ์œ ์ € ๋ชฉ๋ก ( set )
    user_num_of_reported = defaultdict(int) # ์œ ์ €๊ฐ€ ์‹ ๊ณ  ๋‹นํ•œ ํšŸ์ˆ˜ ( int )
    suspended = []

    for r in report:
        do_report, be_reported = r.split()
        
        user_num_of_reported[be_reported] += 1
        user_report[do_report].add(be_reported)
        
        if user_num_of_reported[be_reported] == k:
            suspended.append(be_reported)
        
    for s in suspended:
        for i in range(len(id_list)):
            if s in user_report[id_list[i]]:
                answer[i] += 1
    return answer
    
ans = solution(["muzi", "frodo", "apeach", "neo"], ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"], 2)
print(ans)