문제 링크
https://www.acmicpc.net/problem/11652
처음에 작성한 코드
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 |