Search
Duplicate

[Python] BOJ 1302

태그
해쉬
1 more property

문제

김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다.
오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오.

풀이

기본 알고리즘
1. 책의 이름이 들어오면 defaultdict[]++ 2. dictionary를 정렬한 후 맨 앞 원소 출력한다.
Python
복사
defaultdict 자료형
collections 안에 존재한다.
from collections import defaultdict arr = defaultdict(int)
Python
복사
Main 동작
value에 대해서는 내림차순, key에 대해서는 오름차순 정렬하여 출력한다.
from collections import defaultdict N = int(input()) cnt = 0 arr = defaultdict(int) for _ in range(N): book = input() arr[book] += 1 sortarr = sorted(arr.items(), key=lambda x: (-x[1], x[0])) # (권수 내림차, 책이름 오름차) print(sortarr[0][0])
Python
복사

중요

1.
defaultdict을 사용하는 경우 list, set을 통해서도 활용할 수 있다.
############# list from collections import defaultdict name_list = [('kim','test'), ('kim','test2'),('park','test3'),('kim','test')] ndict = defaultdict(list) for k,v in name_list: ndict[k].append(v) print(ndict) >>> defaultdict(<class 'list'>, {'kim': ['test', 'test2', 'test'], 'park': ['test3']}) ############## set - 중복제거 사용 가능 from collections import defaultdict name_list = [('kim','test'), ('kim','test2'),('park','test3'),('kim','test')] ndict = defaultdict(list) for k,v in name_list: ndict[k].add(v) print(ndict) >>> defaultdict(<class 'set'>, {'kim': {'test', 'test2'}, 'park': {'test3'}})
Python
복사