11652번 : 카드 - Python

FriOct·2023년 1월 22일
0

PS

목록 보기
20/108

문제

https://www.acmicpc.net/problem/11652

풀이

파이썬의 딕셔너리를 이용하여 각 숫자들을 카운트 한다음 횟수와 숫자의 크기로 정렬한 다음 출력한다.

코드

from sys import stdin

input = stdin.readline

array = dict()

number = int(input())

for i in range(number):
    n = int(input())

    if n not in array:
        array[n] = 0
    array[n]+=1

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

print(array[0][0])

다른 풀이

입력 받은 값들을 정렬한 후에 하나씩 카운트해서 간다 전값(i-1)과 현재 값(i)이 다르다면 지금까지 카운트(cnt)한 값과 비교해서 지금까지 카운트한 값이 크다면 그 전값(i-1)을 저장(idx)한 다음에 다시 처음부터 카운트 한다. 모든 값을 비교한 후에 저장(idx)값을 출력한다.

다른 코드

from sys import stdin

input = stdin.readline

n = int(input())

array = [int(input()) for i in range(n)]

array.sort()

cnt = 1
max = 1
idx = 0

for i in range(1,n):
    if array[i] == array[i-1]:
        cnt+=1
    else:
        if cnt>max:
            max = cnt
            idx = i-1
        cnt = 1

if cnt>max:
    max = cnt
    idx = n-1    

print(array[idx])
profile
꿈 많은 개발자

0개의 댓글