TÓPICO

Por que o código abaixo gera 100% wrong answer?

hborges3 perguntou 4 years ago

Eu submeti o código abaixo e recebi 100% wrong answer. Eu testei no UriDebug e com a entrada do próprio problema e a resposta foi a esperada. Se eu por '\n' após o print, eu consigo 20% de erro, o que não faz sentido para mim, pois que eu saiba o python pula automaticamente de linha quando vai dar o próximo print.

Minha lógica é simples, eu criei um dicionário com as letras e suas respectivas frequências. Eu leio o texto de entrada, converto todas as letras em minúsculas. Para cada caractere lido, se ele for uma letra pertencente ao meu dicionário(ignorando, assim, outros caracteres e espaços em branco) então seu valor de frequência é incrementado em 1. Em seguida, eu vejo qual é a maior frequência e armazendo em uma variável x. Depois, eu crio uma string vazia maxfreq_letters e vou adicionando as letras que tem frequência igual a x. No final de cada loop, eu faço o print da string(que está ordenada em ordem alfabética, pois as chaves do meu dicionário já estão ordenadas).

n = int(input())
for i in range(0,n):
    dict = {'a':0,'b':0,'c':0,'d':0,'e':0,'f':0,'g':0,'h':0,'i':0,'j':0,'k':0,'l':0,'m':0,'n':0,'o':0,'p':0,'q':0,'r':0,'s':0,'t':0,'u':0,'v':0,'w':0,'x':0,'y':0,'z':0}
    text = input()
    text = text.lower()
    for k in text:
        if k in dict.keys():
            dict[k] += 1
    x = max(dict.values())
    maxfreq_letters = ''
    for i in dict.keys():
        if dict[i] == x:
            maxfreq_letters = maxfreq_letters + i
    print(maxfreq_letters)

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.

  • phenrique651 respondido 2 years ago

    Dependendo da versão do python, a ordem do dicionário não é garantida, é comum utilizar o OrderedDict do módulo collections. Logo ao invés de por exemplo: dict = {'a': 0, 'b': 0} ficaria:

    from collections import OrderedDict
    dict = OrderedDict('a':0, 'b':0)

    acervolima.com/metodos-de-dicionario-ordenado-em-python/

  • wsalvatore respondido 3 years ago

    Não consegui identificar onde você está errando... tenta usar outra logica sei lá...

  • PedroFeitosa respondido 3 years ago

    Você não está imprimindo em ordem alfabética. Um dos motivos.

    MOD