[Algorithm][Python] 백준(BOJ) 11652 카드
[문제]
https://www.acmicpc.net/problem/11652
[내 코드]
import sys
n = int(input())
cards = dict()
for _ in range(n):
data = int(sys.stdin.readline())
if data in cards:
cards[data] += 1
else:
cards[data] = 1
cards = sorted(cards.items(), key=lambda x : ( -x[1], x[0] ))
print(cards[0][0])
💡문제 풀이
- 문제를 처음 보고 각 카드 수를 카운트하는 거라서 계수 정렬을 생각했으나, 카드에 적혀있는 수가 -2^64부터 2^64까지라서 그 많은 수의 배열을 선언해두면 메모리 낭비가 될 것 같았다.
- 그래서 Dict자료형을 사용했다.
- Dict자료형은 {key : value} 로 저장되어 있다.
- Value 값은 중복될 수 있으나, Key 값은 중복될 수 없다.
- 순서가 없기 때문에, 인덱스로는 접근할 수 없고, 키로 접근할 수 있다.
- sorted()를 사용하여 정렬을 할건데, 반환형은 튜플로 이루어진 리스트이다.
- 카드의 빈도수, 같다면 작은 수를 기준으로 정렬을 한다.
- 리스트이므로 인덱스로 가장 앞의 정수를 출력한다.
댓글남기기