๐งฎ PS
[ํ๋ก๊ทธ๋๋จธ์ค] (Python) - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ
Newmon
2022. 3. 9. 15:47
https://programmers.co.kr/learn/courses/30/lessons/92334
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ
๋ฌธ์ ์ค๋ช ์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค ํฉ๋๋ค. ๋ฌด์ง๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ฐ ์ ์ ๋ ํ ๋ฒ์ ํ ๋ช ์
programmers.co.kr
ํ์ด
๋ณ๋ค๋ฅธ ํ์ด ๋ฐฉ๋ฒ ์์ด ๋ฌธ์ ๋ฅผ ๊ทธ๋๋ก ๊ตฌํํ๋ฉด ๋๋ค.
# ํ๋ฒ์ ํ ์ ์ ์ ๊ณ ๊ฐ๋ฅ, ํ ์ ์ ๋ฅผ ์ฌ๋ฌ๋ฒ ์ ๊ณ ์ 1๋ฒ์ผ๋ก ๊ฐ์ฃผ
# K๋ฒ ์ด์ ์ ๊ณ ๋๋ฉด ์ ์ง
# ์ ๊ณ ํ ์ฌ๋์๊ฒ ์ฒ๋ฆฌ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ๋๋ค.
3๊ฐ์ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ ํ์๋ค. ์ฝ๋ฉ ํ
์คํธ๋ฅผ ๋ณผ๋ ํจ์๋ฅผ ๋๋๋๊ฒ ์ข์์ง ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค....
# 0. (์ฌ์ ์ฒ๋ฆฌ) ๊ฐ์ ์ ๊ณ ๋ฅผ ํ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก ์ค๋ณต์ ๊ฑฐ๋ฅผ ๋จผ์ ํด์ค๋ค.
# 1๋ฒ ๋ฉ์๋. ์ ๊ณ ์ : [ํผ ์ ๊ณ ์๋ค] ํํ๋ก ๋ง๋ ๋ค.
# 2๋ฒ ๋ฉ์๋. ํผ ์ ๊ณ ์๋ค๋ง ์นด์ดํ
ํด์ ์ ์ง๋นํ ํผ ์ ๊ณ ์์ฒดํฌ( K ๋ฒ ์ด์ )
# 3๋ฒ ๋ฉ์๋. ์ ์ง๋ฆฌ์คํธ์ ํผ ์ ๊ณ ์๋ค ๋ฆฌ์คํธ ๋์กฐํด์ ๋ฐํํ result๋ฐฐ์ด ์์ฑ
# ๋ฉ์๋ 3
def send_email(id_list, block_list, report_dict):
result = [0 for _ in range(len(id_list))]
idx = 0
for user in id_list:
for block_user in block_list:
if None != report_dict.get(user) and report_dict[user].count(block_user):
result[idx] += 1
idx += 1
return result
# ๋ฉ์๋ 2
def block_user_check(id_list, reported_list ,k):
block_list = set()
for user in id_list:
if reported_list.count(user) >= k :
block_list.add(user)
return list(block_list)
#๋ฉ์๋ 1
def transform_dict(report):
report_dict = dict()
reported_list = []
for rep in report:
report_user , reported_user = rep.split()
reported_list.append(reported_user)
if report_dict.get(report_user) == None :
report_dict[report_user] = [reported_user]
else :
report_dict[report_user].append(reported_user)
return report_dict, reported_list
def solution(id_list, report, k):
report = list(set(report)) # 0. ์ค๋ณต์ ๊ฑฐ
report_dict, reported_list = transform_dict(report)
block_list = block_user_check(id_list, reported_list, k)
return send_email(id_list,block_list, report_dict)