[PYTHON] AtCoder Beginner Contest 053 Revue des questions précédentes

Deuxième question passée

Temps requis

スクリーンショット 2020-01-08 15.05.48.png

Impressions

Je n'avais pas le temps, alors j'ai refait les simples questions passées.

Problème A

Modifiez la sortie en fonction de x.

answerA.py


x=int(input())
print("ABC" if x<1200 else "ARC")

Problème B

Comptez de l'avant et de l'arrière.

answerB.py


s=input()
n=len(s)
a,b=0,0
for i in range(n):
    if s[i]=="A":
        a=i
        break
for i in range(n-1,-1,-1):
    if s[i]=="Z":
        b=i
        break
print(b-a+1)

Voici le code refactoré. (C'est une fonction basique, mais je ne me souviens pas que c'est mauvais ...)

answerB_better.py


s = input()
#Recherche de l'avant pour l'index et de l'arrière pour rindex et retourne le premier index
print(s.rindex('Z') - s.index('A') + 1)

Problème C

Puisque vous pouvez choisir librement les yeux, il est préférable de choisir dans l'ordre de 6 → 5, si vous pensez au quotient divisé par 11, c'est OK

answerC.py


x=int(input())
ans=0
ans+=(x//11)*2
x-=(x//11)*11
if x==0:
    print(ans)
elif x<=6:
    print(ans+1)
else:
    print(ans+2)

Problème D

C'était un problème vert et c'était la deuxième fois, donc si je ne faisais pas attention, cela a pris plus de temps que prévu.

Il est clair que laisser tous les éléments un par un est le nombre maximum de cartes **, ce qui vous motive à y parvenir. Ici, lorsque vous en sélectionnez 3 dans la phrase de question, vous en mangez 2, vous pouvez donc voir que ** choisir parmi ceux qui couvrent ces 2 ** est le meilleur moyen d'y parvenir. Par conséquent, je ne pense pas que ce soit une idée difficile de trouver l'idée que ** le nombre de personnes couvertes devrait être considéré comme des groupes distincts. Par exemple, lorsqu'il y a une carte «1 1 1 2 2 3 4 4 4 5 5», elle est divisée en «1 2 3 4 5» et «1 1 2 4 4 5», et ce dernier groupe de revêtements Pensez à manger les nombres dans l'ordre. Tout d'abord, si vous voulez manger 1 et 1 (même nombre) dans le dernier groupe, vous pouvez ** sélectionner 3 avec 1 dans le premier groupe **. Ensuite, si vous essayez de manger 2 et 4, vous pouvez manger à la fois 2 et 4 en ** choisissant 2 ou 4 de l'ancien groupe **. Vous pouvez manger 2 et 5 de la même manière, vous pouvez donc manger le dernier groupe de couvre-chefs et atteindre le nombre maximum de cartes, 5. Cependant, si le nombre de groupes souffrants est un nombre impair, vous ne devez en manger qu'un seul du premier groupe ** en raison de la restriction d'en manger deux chacun ** (par exemple, lorsque "1 1 2 3" ). Sur la base des considérations ci-dessus, le nombre maximum de cartes peut être obtenu en comptant ce qui est couvert et en les classant par égalité et bizarrerie totales. (À ce stade, vous pouvez trier et regrouper par pour les diviser en groupes proprement. ** La fonction de regroupement par fonction est vraiment pratique **.)

answerD.py


n=int(input())
def groupby(a):
    a2=[[a[0],1]]
    for i in range(1,len(a)):
        if a2[-1][0]==a[i]:
            a2[-1][1]+=1
        else:
            a2.append([a[i],1])
    return a2

b=groupby(sorted([int(i) for i in input().split()]))
l=len(b)
co=0
for i in range(l):
    co+=(b[i][1]-1)
if co%2==0:
    print(l)
else:
    print(l-1)

Recommended Posts

AtCoder Beginner Contest 102 Revue des questions précédentes
AtCoder Beginner Contest 072 Revue des questions précédentes
AtCoder Beginner Contest 085 Revue des questions précédentes
AtCoder Beginner Contest 062 Revue des questions précédentes
AtCoder Beginner Contest 113 Revue des questions précédentes
AtCoder Beginner Contest 074 Revue des questions précédentes
AtCoder Beginner Contest 051 Revue des questions précédentes
AtCoder Beginner Contest 127 Revue des questions précédentes
AtCoder Beginner Contest 119 Revue des questions précédentes
AtCoder Beginner Contest 151 Revue des questions précédentes
AtCoder Beginner Contest 075 Revue des questions précédentes
AtCoder Beginner Contest 054 Revue des questions précédentes
AtCoder Beginner Contest 110 Revue des questions précédentes
AtCoder Beginner Contest 070 Revue des questions précédentes
AtCoder Beginner Contest 105 Revue des questions précédentes
AtCoder Beginner Contest 112 Revue des questions précédentes
AtCoder Beginner Contest 089 Revue des questions précédentes
AtCoder Beginner Contest 069 Revue des questions précédentes
AtCoder Beginner Contest 079 Revue des questions précédentes
AtCoder Beginner Contest 056 Revue des questions précédentes
AtCoder Beginner Contest 087 Revue des questions précédentes
AtCoder Beginner Contest 067 Revue des questions précédentes
AtCoder Beginner Contest 093 Revue des questions précédentes
AtCoder Beginner Contest 046 Revue des questions précédentes
AtCoder Beginner Contest 123 Revue des questions précédentes
AtCoder Beginner Contest 049 Revue des questions précédentes
AtCoder Beginner Contest 078 Revue des questions précédentes
AtCoder Beginner Contest 081 Revue des questions précédentes
AtCoder Beginner Contest 060 Revue des questions précédentes
AtCoder Beginner Contest 104 Revue des questions précédentes
AtCoder Beginner Contest 057 Revue des questions précédentes
AtCoder Beginner Contest 121 Revue des questions précédentes
AtCoder Beginner Contest 126 Revue des questions précédentes
AtCoder Beginner Contest 090 Revue des questions précédentes
AtCoder Beginner Contest 103 Revue des questions précédentes
AtCoder Beginner Contest 061 Revue des questions précédentes
AtCoder Beginner Contest 059 Revue des questions précédentes
AtCoder Beginner Contest 044 Revue des questions précédentes
AtCoder Beginner Contest 048 Revue des questions précédentes
AtCoder Beginner Contest 124 Revue des questions précédentes
AtCoder Beginner Contest 116 Revue des questions précédentes
AtCoder Beginner Contest 097 Revue des questions précédentes
AtCoder Beginner Contest 088 Revue des questions précédentes
AtCoder Beginner Contest 092 Revue des questions précédentes
AtCoder Beginner Contest 099 Revue des questions précédentes
AtCoder Beginner Contest 065 Revue des questions précédentes
AtCoder Beginner Contest 053 Revue des questions précédentes
AtCoder Beginner Contest 094 Revue des questions précédentes
AtCoder Beginner Contest 063 Revue des questions précédentes
AtCoder Beginner Contest 107 Revue des questions précédentes
AtCoder Beginner Contest 071 Revue des questions précédentes
AtCoder Beginner Contest 064 Revue des questions précédentes
AtCoder Beginner Contest 082 Revue des questions précédentes
AtCoder Beginner Contest 084 Revue des questions précédentes
AtCoder Beginner Contest 068 Revue des questions précédentes
AtCoder Beginner Contest 058 Revue des questions précédentes
AtCoder Beginner Contest 043 Revue des questions précédentes
AtCoder Beginner Contest 098 Revue des questions précédentes
AtCoder Beginner Contest 114 Revue des questions précédentes
AtCoder Beginner Contest 045 Revue des questions précédentes
AtCoder Beginner Contest 120 Revue des questions précédentes