문제:
준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -2^62보다 크거나 같고, 2^62보다 작거나 같다.
준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.
입력:
첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1<=N<=100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다.
출력:
첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다.
풀이방법:
숫자를 입력받으면서 HashTabel을 만들고, 이를 item 리스트로 만들면서 조건에 맞게 정렬을 하면 된다.
1
2
3
4
5
6
7
8
9
10
|
N = int(input())
hashTable={}
for _ in range(N):
h = int(input())
if h in hashTable:
hashTable[h] += 1
else:
hashTable[h] = 1
hashList = sorted(list(hashTable.items()),key=lambda x : (-x[1],x[0]))
print(hashList[0][0])
|
cs |
문제링크:
https://www.acmicpc.net/problem/11652
'Algorithm > Python' 카테고리의 다른 글
[BOJ]1543. 문서 검색 (0) | 2020.07.02 |
---|---|
[BOJ]5525. IOIOI (0) | 2020.06.30 |
[BOJ]5052. 전화번호 목록 (0) | 2020.06.23 |
[BOJ]12865. 평범한 배낭 (0) | 2020.06.18 |
[BOJ]10830. 행렬 제곱 (0) | 2020.06.16 |