문제
알고리즘
- 딕셔너리 형으로 신고받은 사람을 카운트한다.
- 신고받은 사람의 횟수가 k개 이상일 경우 신고 한 사람을 카운트한다.
코드
def solution(id_list, report, k):
id_dict = {i: 0 for i in id_list}
report = list(set(report))
for i in range(len(report)):
a, b = report[i].split(" ")
id_dict[b] += 1
temp = []
for j in id_list:
if id_dict[j] >= k:
temp.append(j)
answer = {i: 0 for i in id_list}
for i in range(len(report)):
a, b = report[i].split(" ")
for j in temp:
if b == j:
answer[a] += 1
res = []
for i in id_list:
res.append(answer[i])
return res
제한 시간을 두고 빠르게 풀다 보니 코드가 매우 지저분하다..
다른 사람 풀이
def solution(id_list, report, k):
id_dict = {x: 0 for x in id_list}
answer = [0] * len(id_list)
# 중복을 제거한 report를 반복
for i in set(report):
id_dict[i.split()[1]] += 1 # 신고 받은 사람의 카운트
# 중복을 제거한 report를 반복
for j in set(report):
if id_dict[j.split()[1]] >= k: # 신고 받은 사람이 k번 이상 받은 경우
answer[id_list.idex(j.split[0])] += 1 # 신고 한 사람을 카운트
return answer
다른 사람 풀이를 보면 정말 간단하게 코드가 나온다.
나도 좀 더 침착하게 코드를 짜야할 것 같다.
그래도 알고리즘의 경우 똑같은 방법으로 수행된 것 같다.
github
'CodingTest > Programers' 카테고리의 다른 글
[programers] 프로그래머스(파이썬) : 로또의 최고 순위와 최저 순위 (0) | 2022.04.24 |
---|---|
[programers] 프로그래머스(파이썬) : 소수 만들기 (0) | 2022.04.24 |
[programers] 프로그래머스(파이썬) : 다단계 칫솔 판매 (0) | 2022.01.21 |
[programers] 프로그래머스 카카오(파이썬) : [1차] 다트 게임 (0) | 2022.01.14 |
[programers] 프로그래머스 카카오(파이썬) : [3차] n진수 게임 (0) | 2022.01.07 |