Ich dachte, es wäre ein einfacher Sieg, weil es Problem A war, aber ich konnte keine lebendige Antwort finden. (Ich möchte mir keine Zeit nehmen, also habe ich einen Code eingereicht, der nicht den Sinn hat, acht Fälle in fester Form zu schreiben. Es tut mir leid ...)
Als ich mir die Beiträge der Top-Performer ansah, um Hinweise zu erhalten, sah ich viele lebhafte Antworten mit itertools, aber für mich, die ich kürzlich anfing, Python zu berühren, war die Gruppierung ein Slapstick. Ich verstehe diesmal, also werde ich den Inhalt aufschreiben.
Es gibt eine Aufzeichnung des Wetters in der Stadt AtCoder für einen aufeinanderfolgenden $ 3 $ Tag. Der Wetterrekord wird durch die $ 3 $ Längenzeichenfolge $ S $ dargestellt, und das $ i (1 \ leq i \ leq 3) $ Tageswetter ist sonnig, wenn der $ i $ Buchstabe 'S', 'R' ist. Zu dieser Zeit regnete es. Finden Sie die maximale Anzahl aufeinanderfolgender Tage, an denen das Wetter regnet.
Zwang
Die Anfrage ist sehr einfach, aber wenn Sie einfach nach der Anzahl von 'R' urteilen, ist es NG mit dem Muster von 'RSR'.
Wenn Sie es ohne Erweiterbarkeit schreiben, sieht es wie folgt aus. Es ist ein Stoß.
Shoboi Antwort
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)
Wahrscheinlich ist dies der erwartete Code.
Gewöhnliche Antwort
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__ hatte eingereicht den folgenden Code. .. Der gelbe Codierer ist vollständig sichtbar, da er in Python der schnellste Wechselstrom in 36 Sekunden ist.
#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)
Es ist sehr vielseitig und schön. Sie können immer die längste zusammenhängende Zahl in einer bestimmten Zeichenfolge erhalten, indem Sie einfach den von Ihnen angegebenen Teil des Schlüssels neu schreiben. Ich finde, dass der Code da sein sollte.
Dies ist das offizielle Dokument von groupby. itertools.groupby(iterable, key=None)
Es scheint, dass Sie für mehrdimensionale Eingaben nach jeder Spalte gruppieren können, aber dieses Mal werde ich es mit einem eindimensionalen Array betrachten. Es scheint sich so zu verhalten.
#Groupby aus itertools importieren (itertools hatte viele andere nützliche Tools)
from itertools import groupby
#Eindimensionales Array zum Gruppieren nach
mylist = [0,0,0,1,1,2,2,2,1,1,1]
#group by ist iterierbar und gibt Schlüssel und Gruppe zurück
for key, group in groupby(mylist):
#Verwandeln Sie jedes Element der Gruppe in eine Liste und geben Sie es aus
print(key, list(group))
#Ausgabe
# 0 [0, 0, 0]
# 1 [1, 1]
# 2 [2, 2, 2]
# 1 [1, 1, 1]
Die von "groupby" erhaltene "Gruppe" ist nur ein iterierbares "Objekt". Es scheint also, dass Sie sie in eine Liste umwandeln müssen, wenn Sie damit umgehen.
Übrigens, wenn der Typ von "Gruppe" als "Typ (Gruppe)" ausgegeben wird, ist es "<class'itertools._grouper"> ".
Für die Gruppe, deren Schlüssel "R" ist, bedeutet dies, dass die Anzahl der Elemente der Gruppe von "len (list (v))" erfasst und das maximale ausgegeben wird. Es war sehr lebendig und ich habe viel gelernt. Ich werde auch mein Bestes geben.