Je pensais que ce serait une victoire facile parce que c'était le problème A, mais je n'ai pas pu trouver une réponse claire. (Je ne veux pas prendre de temps, alors j'ai fini par soumettre un code qui n'a pas le sens d'écrire huit cas sous forme solide, je suis désolé ...)
Lorsque je regardais les soumissions des meilleurs interprètes pour obtenir des indices, j'ai vu de nombreuses réponses vives en utilisant itertools, mais pour moi qui a récemment commencé à toucher Python, Group by était un slapstick. Je comprends cette fois, donc je vais écrire le contenu.
Il y a un record de la météo dans la ville d'AtCoder pour une journée consécutive de 3 $. L'enregistrement météorologique est représenté par la chaîne de longueur $ 3 $ $ S $, et le temps $ i (1 \ leq i \ leq 3) $ day est ensoleillé lorsque la lettre $ i $ est'S ',' R ' Il pleuvait à ce moment-là. Trouvez le nombre maximum de jours consécutifs lorsque le temps est pluvieux.
Contrainte
La requête est très simple, mais si vous jugez simplement par le nombre de «R», ce sera NG avec le modèle de «RSR».
Si vous l'écrivez sans aucune extensibilité, ce sera comme suit. C'est une poussée.
Réponse de Shoboi
s = input()
if s == 'RRR':
res = 3
elif s =='SRR':
res = 2
elif s =='RSR':
res = 1
elif s =='RRS':
res = 2
elif s =='RSS':
res = 1
elif s =='SRS':
res = 1
elif s =='SSR':
res = 1
else:
res = 0
print(res)
C'est probablement le code attendu.
Réponse ordinaire
s = input()
if 'RRR' in s:
res = 3
elif 'RR' in s:
res = 2
elif 'R' in s:
res = 1
else:
res = 0
print(res)
morio__ avait soumis le code suivant. .. Le codeur jaune est complètement révélateur car c'est le CA le plus rapide en 36 secondes en Python.
#15907417
from itertools import groupby
res = 0
s = input()
for k, v in groupby(s):
if k == 'R':
res = max(res, len(list(v)))
print(res)
C'est très polyvalent et beau. Vous pouvez toujours obtenir le nombre contigu le plus long d'une chaîne donnée en réécrivant simplement la partie de la clé que vous spécifiez. Je pense que le code devrait être là.
Ceci est le document officiel de groupby. itertools.groupby(iterable, key=None)
Il semble que vous puissiez grouper par n'importe quelle colonne pour une entrée multidimensionnelle, mais cette fois, je vais l'examiner avec un tableau unidimensionnel. Il semble se comporter comme ça.
#Importez groupby depuis itertools (itertools avait de nombreux autres outils utiles)
from itertools import groupby
#Tableau unidimensionnel à regrouper
mylist = [0,0,0,1,1,2,2,2,1,1,1]
#group by est itérable et renvoie la clé et le groupe
for key, group in groupby(mylist):
#Cast chaque élément du groupe dans une liste et une sortie
print(key, list(group))
#production
# 0 [0, 0, 0]
# 1 [1, 1]
# 2 [2, 2, 2]
# 1 [1, 1, 1]
Le groupe
obtenu par groupby
est juste un" objet "itérable, il semble donc que vous deviez le convertir en liste lorsque vous le manipulez.
Au fait, lorsque le type de groupe
est affiché comme type (groupe)
, il s'agit de<class'itertools._grouper '>
.
Pour le groupe dont la clé est «R», cela signifie que le nombre d'éléments du groupe est acquis par «len (list (v))» et le maximum est sorti. C'était très vivant et j'ai beaucoup appris. Je ferai de mon mieux aussi.
Recommended Posts