문제 링크
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
'파이썬 알고리즘 문제 풀이' 카테고리의 다른 글
BaekJoon Online Judge 10828번 파이썬 (0) | 2022.05.11 |
---|---|
BaekJoon Online Judge 11004번 파이썬 (0) | 2022.05.10 |
BaekJoon Online Judge 10825번 파이썬 (0) | 2022.05.03 |
BaekJoon Online Judge 10814번 파이썬 (1) | 2022.05.03 |
BaekJoon Online Judge 11651번 파이썬 (0) | 2022.05.02 |