[BOJ 11652] 카드 (Python)

Gooder·2021년 5월 13일
0

알고리즘_문제풀기

목록 보기
21/25

문제링크

카드

풀이 전 계획 및 생각

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를 이용할 수 있다는 것을 다시 한 번 상기시킬 수 있었다.

profile
세상을 변화시킬 신스틸러 서비스를 만들고싶은 개발자 Gooder 입니다.

0개의 댓글