반응형
풀이
def solution(id_list, report, k):
declare = {} # 신고당한 사람 : 신고한 사람
declared = [] # 유저 순서대로 신고 당한 수
answer = {}
for i in id_list: # 유저 수 만큼 배열 생성
declare[i] = []
answer[i] = 0 // 초기 신고 값은 (이름: 0)
for i in report:
a, b = i.split(" ") # 신고하는 사람과 당한 사람을 나눔
if a not in declare[b]: # 중복 신고 체크
declare[b].append(a) # 중복이 아니라면 추가
for i in declare.values(): # 각 유저별 신고 당한 수 저장
declared.append(len(i))
for index, value in enumerate(declared): # 인덱스와 값을 돌림
if value >= k: # k번 이상 신고 당했을 때
for i in declare[id_list[index]]: # 신고한 사람에게 +1씩
answer[i] += 1
return list(answer.values()) # 신고한 사람이 받은 메일
저는 이 문제를 dictionary와 list를 이용해 풀었는데 체크하는 과정에서 for문을 너무 많이 썼다 생각했습니다.
다른 사람의 풀이를 보니 set을 사용하면 편리했네요.
알고는 있지만 응용이 어려운 것 같습니다. 적재적소에 활용하는 능력을 키워야 할 듯 합니다.
반응형
'개발 > PS' 카테고리의 다른 글
[Swift] 프로그래머스 LV1 비밀지도 (0) | 2022.03.12 |
---|---|
[Swift] 프로그래머스 Lv1 모의고사 (0) | 2022.02.19 |
[Python] 프로그래머스 Lv2 기능개발 (0) | 2022.01.03 |
[Python] 프로그래머스 Lv1 완료하지 못한 선수 (0) | 2022.01.03 |
[Python] 프로그래머스 Lv2 타켓넘버 (DFS, BFS) (0) | 2022.01.01 |