dictionary 자료형에 저장하면서 몇 장씩 가지고있는지를 count했다.
그리고 난 후에 dictionary의 key의 value들을 하나씩 탐색하면서, 가장 많은 장수의 카드를 찾고, 카드의 장수가 같은 경우에는 숫자가 작은 카드를 선택했다.
import sys
n = int(input())
cards = dict()
for _ in range(n):
card = int(sys.stdin.readline())
if card not in cards:
cards[card] = 0
cards[card] += 1
maxi = -1*sys.maxsize
card_num = 0
for data in cards:
if cards[data] > maxi:
card_num = data
maxi = cards[data]
elif cards[data] == maxi and card_num > data:
card_num = data
print(card_num)
실제 코딩테스트에서는 2^62을 정확하게 계산하는게 어려울 수 있다는 생각을 해서 c언어에서의 INFINITY와 같은 개념이 있는지 찾아보았고, sys 라이브러리에 있는 maxsize를 이용하면 된다는 것을 알았다.
정렬이 필요해보이는 문제지만, 그 순서가 중요하지않은 숫자의 대소관계 등을 다루는 경우는 dictionary를 이용할 수 있다는 것을 다시 한 번 상기시킬 수 있었다.