728x90
반응형
문제 설명
준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다.
준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.
제한 사항
-첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다.
-첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다.
입출력 예
input |
output |
5 1 2 1 2 1 |
1 |
6 1 2 1 2 1 2 |
1 |
접근법
collections라이브러리의 Counter함수를 이용하면 굉장히 쉽게 풀립니다. 먼저 입력받은 리스트를 오름차순으로 정렬시켜준 뒤, Counter를 이용하여 각 원소당 빈도 수를 세주고, most_common을 이용하여 빈도수가 높은 순서대로 나열해줍니다. 이미 원소는 오름차순으로 정렬되어있기 때문에, 같은 빈도수가 존재하더라도 가장 작은 원소를 출력하게됩니다.
나의 코드
import sys
from collections import Counter
number = int(sys.stdin.readline())
cards = []
for _ in range(number):
cards.append(int(sys.stdin.readline()))
cards.sort()
cards_num = Counter(cards)
cards = list(cards_num.most_common())
print(cards[0][0])
반응형
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준] 10867번 중복 빼고 정렬하기 (0) | 2021.03.20 |
---|---|
[백준] 5052번 전화번호 목록 (0) | 2021.03.20 |
[백준] 2822번 점수 계산 (0) | 2021.03.20 |
[백준] 11728번 배열 합치기 (0) | 2021.03.20 |
[백준] 1946번 신입 사원 (0) | 2021.03.20 |