문제 링크 (Level 1)
https://programmers.co.kr/learn/courses/30/lessons/92334?language=python3
나의 코드 (Python)
def solution(id_list, report, k):
answer = [] # 결과
reported_user = [] # 임시저장
# 신고횟수, 신고당한사람
dict_count = {name: 0 for name in id_list}
dict_report = {name: [] for name in id_list}
# 리포트 된 유저 처리
for s in report:
user, report_user = s.split() # 신고유저, 신고당한유저
if report_user not in dict_report[user]: # 신고당한 딕셔너리 목록에 없는 경우
dict_report[user].append(report_user) # 신고당한 딕셔너리 목록에 없는 경우 추가
# 신고 횟수 추가
for i in id_list:
for j in dict_report:
if i in dict_report[j]: # 신고당한유저에 있다?
dict_count[i] += 1 # 카운팅 +1
if dict_count[i] >= k: # 정지횟수까지 온 경우
reported_user.append(i) # 임시저장 배열에 추가
# 결과에 담기
for i in id_list:
cnt = 0 # 카운팅 0
for j in dict_report[i]: # 신고당한 횟수만큼 반복
if j in reported_user: # 신고당한 사람이 정지된 임시목록에 있어야함
cnt += 1 # 그 수만큼 카운팅
answer.append(cnt) # 신고당한횟수만큼 정답에 추가, 신고당한적없으면 0
return answer
더 짧게 푸는 방법이 떠오르지 않아 하나씩 하는 방식으로 했습니다.
먼저 신고당한 유저의 목록을 만들어줍니다.
다음으로 신고당한 유저가 몇 번 신고당했는지 카운팅 해서 정지당하는지 확인하고 정지당하면 정지 리스트에 추가
정지당한 목록에 있는 유저가 몇 번 신고당했는지 카운팅
'코딩공부 > 프로그래머스 (python)' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위 (Python) (0) | 2022.03.23 |
---|---|
[프로그래머스] 없는 숫자 더하기 (Python) (0) | 2022.03.22 |
[프로그래머스] 문자열 압축 (python) (0) | 2021.08.02 |
[프로그래머스] 숫자 문자열과 영단어 (python) (0) | 2021.07.29 |
[프로그래머스] 폰켓몬 (python) (0) | 2021.07.27 |
댓글