GitHub

https://github.com/Choidongjun0830

파이썬 알고리즘 문제 풀이

BaekJoon Online Judge 11652번 파이썬

gogi masidda 2022. 5. 10. 16:48

문제 링크
https://www.acmicpc.net/problem/11652

 

11652번: 카드

준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지

www.acmicpc.net


처음에 작성한 코드

import sys

N = int(sys.stdin.readline())
cards = []

for i in range(0,N):
  cards.append( int(sys.stdin.readline()))

count = [0] * N
for card in cards:
  count[card] += 1

max = max(count)
print(max)


대충 위와 같은 방식으로 리스트를 이용하여 문제를 해결하려 했다.
하지만 가장 많은 개수의 숫자를 출력하는데에 어려움을 느껴 딕셔너리를 이용하였다.
딕셔너리에서 key 값을 카드에 적힌 숫자,  value 값을 카드 개수로 하여 문제를 해결했다.

정답 코드

import sys

N = int(sys.stdin.readline())
cards = {}

for i in range(0,N):
  card = int(sys.stdin.readline())
  if card in cards:
    cards[card] += 1
  else:
    cards[card] = 1

result = sorted(cards.items(), key = lambda x:(-x[1],x[0]))

print(result[0][0])
728x90