Notice
Recent Posts
Recent Comments
Link
Love Every Moment
〔프로그래머스/파이썬〕신고 결과 받기 (+딕셔너리 컴프리헨션 사용법) 본문
반응형
출처
가장 추천 많이 받은 풀이
def solution(id_list, report, k):
answer = [0] * len(id_list)
reports = {x : 0 for x in id_list}
for r in set(report):
reports[r.split()[1]] += 1
for r in set(report):
if reports[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
- 내가 직접 풀었던 풀이는 시간 초과가 떠서 부분 실패했다
- 다른 사람의 풀이 중에서 가장 추천을 많이 받은 풀이를 보고 공부가 많이 되었다
- 여기서 새로 배운 것은 3번째 라인의 reports 에서 쓰인 딕셔너리 컴프리헨션 사용법!
추천 풀이 응용한 나의 풀이
def solution(id_list, report, k):
report = set(report)
# 신고 당한 횟수 딕셔너리(사람 : 신고 당한 횟수)
reported_nums = {x: 0 for x in id_list}
# 정지 당한 사람 리스트
banned = list()
# 메일 받은 횟수 리스트
answer = [0] * len(id_list)
for i in report :
reporter, reported = i.split()
reported_nums[reported] += 1
if reported_nums[reported] == k :
banned.append(reported)
for i in report :
reporter, reported = i.split()
if reported in banned :
answer[id_list.index(reporter)] += 1
return answer
딕셔너리 컴프리헨션
# list comprehension
>>> [ x+y for x in range(10) for y in range(10) ]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
# set comprehension
>>> { x+y for x in range(10) for y in range(10) }
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
# dictionary comprehension
>>> students = ['철수', '영희', '길동', '순희']
>>> { student: 0 for student in students }
{'철수': 0, '영희': 0, '길동': 0, '순희': 0}
- 기존에 알고있는 리스트 컴프리헨션 사용법과 동일하지만, 대괄호[] 대신에 중괄호{} 를 사용하면 set comprehension
- 여기서 중괄호{} 를 이용하면서 key : value 의 형태로 내용을 채운다면 dictionary comprehension
- collections 모듈의 defaultdict 와 유사한 역할을 하지만, 딕셔너리 컴프리헨션은 0이 아닌 값을 지정할 수 있어서 좋다
반응형
'PROGRAMMING::LANGUAGE > Python' 카테고리의 다른 글
〔프로그래머스/파이썬〕문자열 섞기 (0) | 2023.07.03 |
---|---|
〔백준/파이썬〕11651번 좌표 정렬하기2 (0) | 2022.07.31 |
〔파이썬〕클래스란? 클래스, 인스턴스, 속성, 메서드 사용법 (0) | 2022.06.30 |
〔백준/파이썬〕13305번 주유소 (0) | 2022.06.29 |
〔백준/파이썬〕1931번 회의실 배정 (0) | 2022.06.26 |
Comments