AtCoder Anfängerwettbewerb 175 Aufgabe A - Lebendige Antwort in der Regenzeit (Python)

Hintergrund

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.

Problem

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 \left| S \right| = 3 Jeder Buchstabe von $ S $ ist 'S'or'R'

Die Anfrage ist sehr einfach, aber wenn Sie einfach nach der Anzahl von 'R' urteilen, ist es NG mit dem Muster von 'RSR'.

Shoboi Antwort

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)

Gewöhnliche Antwort

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)

Hochrangiges Antwortbeispiel

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.

Über Gruppe von

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"> ".

Was ich verstanden habe

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.

Recommended Posts

AtCoder Anfängerwettbewerb 175 Aufgabe A - Lebendige Antwort in der Regenzeit (Python)
AtCoder Anfängerwettbewerb 175 Ein Problem "Regenzeit" Erklärung (C ++, Python3, Java)
Atcoder Anfänger Wettbewerb 152 Kiroku (Python)
AtCoder Anfängerwettbewerb 166 A Erklärung des Problems "A? C" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 167 Ein Problem "Registrierung" Erklärung (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 C Problem (Python)
AtCoder Anfängerwettbewerb 170 Ein Problem "Fünf Variablen" Erklärung (C ++, Python, Java)
AtCoder Beginner Contest 169 Eine Erklärung des Problems "Multiplikation 1" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 Ein Problem "Klimaanlage" Erklärung (C ++, Python, Java)
[Python] [Erklärung] AtCoder Typischer DP-Wettbewerb: Ein Wettbewerb
AtCoder Anfängerwettbewerb: D Problemantworten Python
AtCoder Anfängerwettbewerb 179
AtCoder Anfängerwettbewerb 180
AtCoder Anfängerwettbewerb 173
Atcoder Anfänger Wettbewerb 153
AtCoder Anfängerwettbewerb 177 Eine Erklärung des Problems "Sei nicht zu spät" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 165 Ein Problem "Wir lieben Golf" Erklärung (Python3, C ++, Java)
Atcoder-Anfängerwettbewerb A, B Zusammenfassung der Eingabe, die tendenziell ein Problem für Python darstellt
AtCoder Anfängerwettbewerb 181 Hinweis
AtCoder Anfängerwettbewerb 166 Bewertung
AtCoder Anfängerwettbewerb 167 Bewertung
AtCoder Anfängerwettbewerb 182 Hinweis
AtCoder Beginner Contest 164 Bewertung
AtCoder Beginner Contest 169 Bewertung
AtCoder Beginner Contest 181 Bewertung
AtCoder Beginner Contest 171 Bewertung
AtCoder Beginner Contest 182 Bewertung
AtCoder Beginner Contest 180 Bewertung
AtCoder Anfängerwettbewerb 156 WriteUp
AtCoder Anfängerwettbewerb 177 Rückblick
AtCoder Anfängerwettbewerb 168 Bewertung
AtCoder Beginner Contest 179 Bewertung
AtCoder Beginner Contest 167 Memorandum
AtCoder Beginner Contest 172 Bewertung
AtCoder Anfängerwettbewerb 183 Hinweis
AtCoder Anfängerwettbewerb 176 Bewertung
AtCoder Anfängerwettbewerb 184 Hinweis
AtCoder Anfängerwettbewerb 175 Bewertung
AtCoder Anfängerwettbewerb 174 Bewertung
AtCoder Beginner Contest 153 Bewertung
AtCoder Anfängerwettbewerb 156 Bewertung
AtCoder Beginner Contest 161 Bewertung
AtCoder Beginner Contest 170 Bewertung
AtCoder Beginner Contest 165 Bewertung
AtCoder Beginner Contest 173 Bewertung
AtCoder Anfängerwettbewerb 155 Bewertung
AtCoder Beginner Contest 162 Bewertung
AtCoder Beginner Contest 181 Teilnahmebericht
AtCoder Beginner Contest 161 Teilnahmebericht
AtCoder-Anfängerwettbewerb 177 B Problem "Teilzeichenfolge" Erläuterung (Python3, C ++, Java)
AtCoder Beginner Contest 151 Teilnahmebericht
AtCoder Beginner Contest 176 Teilnahmebericht
AtCoder ABC 178 Python (A ~ E)
Rückblick auf den AtCoder Beginner Contest 159 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 163 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 164 bis Frage E (Python)
AtCoder Beginner Contest 153 Teilnahmebericht
Rückblick auf den AtCoder Beginner Contest 162 bis Frage E (Python)