
정렬에 해당하는 백준 11652:카드 문제
cardDic={}
N=int(input())
for _ in range(N):
card = int(input())
if card in cardDic:
cardDic[card] += 1
else:
cardDic[card] = 1
ans = sorted(cardDic.items(), key=lambda x: (-x[1],x[0]))
print(ans[0][0])
문제를 보고 같은 번호를 가진 카드의 개수대로 정렬 후, 카드 번호의 숫자대로 정렬해야한다고 생각이 들었다.
파이썬에서 Dictionary 자료형을 제공해주기 때문에 이를 사용하면 되었다.
key와 value의 쌍으로 이루어진 자료형으로 일반적으로 key에는 고유한 값이 들어가 value를 식별할 수 있다.
(기회가 된다면 딕셔너리 자료형에 대해서 정리해보는 시간을 가지겠다.)
아무튼 딕셔너리 자료형을 사용해서 key를 카드 번호로, value를 카드 개수로 지정하여 이미 존재하는 카드라면 value의 값을 1 증가 시키고 없다면 1로 지정하였다.
추가로, 파이썬에서 정렬할 때 sort나 sorted 를 사용하면 된다고 정리한 적이 있는데 특이하게 딕셔너리에서는 sorted만 사용이 가능하다 !!
또, sorted 함수를 사용할 때 어떤 값을 우선순위로 둘지 제대로 정하자
여기서는 카드 개수가 많은 순서대로 먼저 정렬해야하므로 value 값을 내림차순으로 정렬하고 같은 값이 존재할 시 카드 번호를 오름차순으로 정렬해야한다.