AtCoder Beginner Contest 175 Tâche A - Réponse vivante de la saison des pluies (Python)

Contexte

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.

problème

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 \left| S \right| = 3 Chaque lettre de $ S $ est "ou" R "

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

Réponse de Shoboi

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)

Réponse ordinaire

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)

Exemple de réponse de haut niveau

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

À propos de group by

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

Ce que j'ai compris

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

AtCoder Beginner Contest 175 Tâche A - Réponse vivante de la saison des pluies (Python)
AtCoder Beginner Contest 175 Explication d'un problème "Saison des pluies" (C ++, Python3, Java)
Concours Atcoder Débutant 152 Kiroku (python)
AtCoder Beginner Contest 166 A Explication du problème "A? C" (Python3, C ++, Java)
AtCoder Beginner Contest 167 Explication d'un problème "enregistrement" (Python3, C ++, Java)
AtCoder Beginner Contest 174 C Problème (Python)
AtCoder Beginner Contest 170 Un problème Explication des «cinq variables» (C ++, Python, Java)
AtCoder Beginner Contest 169 Explication du problème "Multiplication 1" (Python3, C ++, Java)
AtCoder Beginner Contest 174 Explication d'un problème "Climatiseur" (C ++, Python, Java)
[Python] [Explication] Concours DP typique d'AtCoder: un concours
Concours pour débutants AtCoder: Réponses aux problèmes D Python
Concours AtCoder Débutant 179
Concours AtCoder Débutant 180
Concours AtCoder Débutant 173
Concours Atcoder Débutant 153
AtCoder Beginner Contest 177 Explication du problème "Ne soyez pas en retard" (Python3, C ++, Java)
AtCoder Beginner Contest 165 Un problème Explication "We Love Golf" (Python3, C ++, Java)
Atcoder Beginner Contest A, B Résumé d'entrée qui a tendance à être un problème Python
Concours AtCoder Débutant 181 Remarque
Critique du concours AtCoder pour débutant 166
AtCoder Débutant Contest 167 Évaluation
Concours AtCoder Débutant 182 Remarque
Critique du concours AtCoder
AtCoder Débutant Contest 169 Évaluation
Critique du concours AtCoder Débutant 181
AtCoder Débutant Contest 171 Critique
Critique du concours AtCoder pour débutant 182
Critique du concours AtCoder Débutant 180
Concours AtCoder pour débutants 156 WriteUp
Critique du concours AtCoder pour débutant 177
AtCoder Débutant Contest 168 Critique
Critique du concours AtCoder
Concours AtCoder pour débutants 167
Critique du concours AtCoder pour débutant 172
Concours AtCoder Débutant 183 Remarque
Critique du concours AtCoder
Concours AtCoder Débutant 184 Remarque
AtCoder Débutant Contest 175 Critique
Critique du concours AtCoder
Critique du concours AtCoder Beginner Contest 153
Critique du concours AtCoder pour débutant 156
AtCoder Débutant Contest 161 Critique
AtCoder Débutant Contest 170 Critique
Critique du concours AtCoder
AtCoder Débutant Contest 173 Critique
AtCoder Débutant Contest 155 Critique
AtCoder Débutant Contest 162 Évaluation
AtCoder Beginner Contest 181 Rapport de participation
AtCoder Beginner Contest 161 Rapport de participation
AtCoder Beginner Contest 177 B Explication du problème "Sous-chaîne" (Python3, C ++, Java)
AtCoder Beginner Contest 151 Rapport de participation
AtCoder Débutant Contest 176 Rapport de participation
AtCoder ABC 178 Python (A ~ E)
Examen du concours AtCoder pour débutants 159, jusqu'à la question E (Python)
Examen du concours AtCoder Beginner Contest 163, jusqu'à la question E (Python)
Examen du concours AtCoder Beginner Contest 164, jusqu'à la question E (Python)
AtCoder Beginner Contest 153 Rapport de participation
Examen du concours AtCoder Beginner Contest 162, jusqu'à la question E (Python)