728x90
https://www.acmicpc.net/problem/11652
문제 설명
준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다.
준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.
풀이 과정
① 이 문제에서 직관적으로 파악한 것은 '입력되는 카드값을 특정리스트에 정리한뒤 나중에 제일 많은 값을 출력하면 되겠다.'이다.
② 아이디어 열기
오랜만에 딕셔너리를 사용해볼려고 한다.
# 11652 카드
import sys
input = sys.stdin.readline
n = int(input())
card_dic = {}
for i in range(n) :
card = int(input())
if card in card_dic :
card_dic[card] += 1
else :
card_dic[card] = 1
result = sorted(card_dic.items(),key = lambda x : (-x[1],x[0]))
print(result[0][0])
딕셔너리를 사용한 이유는 key값에 카드의 번호를 저장하고, value값에 카드의 개수를 저장하여 마지막에 value값을 내림차순해주고 같다면 key값을 오름차순해주기 위해서이다.
결과는...
성공..!!
후기
오랜만에 딕셔너리를 사용하다보니 서툴었다..!!
'Algorithm > string' 카테고리의 다른 글
[백준] 11718 그대로 출력하기 (C++) (0) | 2022.01.13 |
---|---|
[백준] 11656 접미사 배열 (Python 파이썬) (0) | 2021.08.12 |
[백준] 1946 신입사원 (파이썬 Python) (0) | 2021.07.29 |
[백준] 10989 수 정렬하기 3 (파이썬 Python) (0) | 2021.07.27 |
[백준] 11650 좌표 정렬하기 (0) | 2021.07.26 |