Une histoire qui est devenue bleu clair en 4 mois après avoir démarré AtCoder avec python

C'est un article selon le titre. 無題.png J'ai lancé AtCoder en septembre et il est devenu bleu clair à AGC41 l'autre jour. J'ai pensé résumer ce que j'ai fait jusqu'à présent dans ce domaine, je vais donc l'écrire sous forme d'article. Je ne sais pas si cela sera utile à tout le monde.

À propos de la personne qui écrit

――Vous avez passé l'examen du premier cycle du secondaire et êtes diplômé de l'ancienne école supérieure de l'Université impériale (majeure de chimie). Par conséquent, j'ai une formation en mathématiques pour m'y inscrire. Je me suis beaucoup amusé à l'université, donc je ne me souviens pas des mathématiques à l'université. --Bien que l'entreprise soit liée à l'informatique, il n'y a presque pas de programmation car elle est plus proche de l'infrastructure. --Java a été touchée il y a environ un an pendant environ deux mois. J'ai touché au C ++ il y a peu de temps. Je ne suis donc pas un profane de la programmation.

Vous pouvez résoudre le problème B d'ABC sans trop d'hésitation, mais partez d'un état où vous n'avez presque aucune connaissance de la programmation et des algorithmes concurrentiels. AtCoder a commencé comme un passe-temps plutôt.

Ce que j'ai fait

** Résolvez les problèmes avec juste le bon niveau de difficulté avec Atcoder Problems. **seulement ça. ↓ Il s'agit de l'état actuel du remplissage ABC. 無題.png Eh bien, je pose 330 questions en 4 mois, donc je pense que c'est une personne qui l'a emballé dans un court laps de temps, mais si vous pensez que 330 questions sont bleu clair, n'est-ce pas approprié? Impression ça. Récemment, j'ai un peu rempli le concours, donc il y a moins de problèmes que j'ai réellement appris.

無題.png Au fait, ** je n'ai pas encore utilisé mathpy ou scipy. ** ** Vous pouvez le faire sans l'utiliser du tout. Je prévois de l'utiliser à l'avenir.

――Remplir une difficulté trop faible peut être bon pour maintenir la motivation, mais je pense que cela ne sert à rien (pas à rien) pour s'améliorer. Une personne qui peut résoudre le problème A en 4 minutes ne peut gagner que 2 minutes même si elle double la vitesse, mais si le problème D prend 40 minutes, elle peut gagner 4 minutes simplement en l'accélérant de 10%, donc c'est un problème difficile. Je pense qu'il est plus facile de s'améliorer si vous travaillez dessus. De plus, par expérience, même si vous résolvez 10 questions de 300 points, vous ne pourrez pas résoudre 400 points. Si vous pouvez résoudre 400 points, vous devez défier 10 questions à 400 points. ―― ** C'est une vérité qui a été vérifiée dans tous les domaines qu'il est préférable pour la croissance de continuer à relever des défis qui représentent environ 1,1 fois vos propres capacités. ** Chez Coder, la conclusion jusqu'à présent est qu'il est préférable de s'attaquer au "problème de savoir si vous pouvez le résoudre en une heure environ".

―― Pensez au problème jusqu'à ce que vous le compreniez complètement. Même si vous regardez le commentaire et pensez: «Oh, c'est vrai», ne vous arrêtez pas là. Je le ferai jusqu'à ce que je le mette en œuvre de mes propres mains. C'était la même chose que d'étudier pour l'examen, mais ** Le plus dangereux est que je peux le résoudre en accumulant autant de questions que possible et en bougeant la main en arrêtant de penser. ** Je le ferai avec l'intention de faire de chaque question mon propre sang. Cependant, il y a certaines choses que je pense encore "je suis encore en avance" quand je regarde le commentaire, donc je n'en fais pas trop.

Avantages et inconvénients de python

C'est une prémisse majeure, et en plus de cela, je vais énumérer les avantages que j'ai réellement ressentis en utilisant python.

○ Lisibilité relativement élevée

Il est facile de comprendre ce que vous faites en un coup d'œil ... C'est plus un avantage lorsque vous regardez le code de quelqu'un d'autre qu'un avantage de l'utiliser vous-même. Pour être honnête, je pense que peu importe si je l'écris un peu de façon confuse ou avec beaucoup de parenthèses. Les principales langues modernes peuvent ne pas être aussi bonnes ou de nature inférieure (parce qu'elles sont autrement éliminées). D'un autre côté, lorsque je lis le code de quelqu'un d'autre, je trouve souvent que python est avantageux car il est court et soigné. Eh bien, c'est aussi subjectif.

○ De nombreuses méthodes mises en œuvre

Il y a beaucoup de gens qui se sont demandés: "Est-ce là?" Recherche dichotomisée, file d'attente prioritaire ou énumération séquentielle. Et si vous google, cela sort essentiellement. Il existe différentes méthodes de routage les plus courtes (bien qu'il soit préférable d'en avoir une que vous avez vous-même implémentée afin de pouvoir apporter diverses modifications mineures).

△ Besoin d'étudier la méthode

Bien sûr, vous ne pouvez pas utiliser quelque chose que vous ne connaissez pas. Vous n'avez aucune chance de le savoir tant que vous ne rencontrez pas le problème de l'utilisation de cette méthode. Eh bien, tout ce que vous avez à faire est d'étudier.

△ Nécessite la connaissance de la quantité de calcul pour chaque méthode

Je pense que c'est commun à toutes les langues dans une certaine mesure, mais la vitesse change complètement en fonction de la méthode utilisée même avec le même contenu d'implémentation. Surtout autour de l'opération de texte, la différence est plus grande. Cependant, je pense que la grande différence est le revers de la médaille de l'abondance des méthodes. On peut dire que c'est un grand mérite que vous n'ayez pas à mettre en œuvre des méthodes détaillées par vous-même.

× Vous devez sélectionner pypy et python

En gros, vous pouvez utiliser pypy, mais python n'est plus rapide que pour les fonctions récursives. Si vous êtes pressé pendant le concours, vous pouvez oublier votre choix et TLE (une défaite).

?? La vitesse d'exécution n'est pas rapide

Cependant, je n'ai jamais eu de vie professionnelle de compétition python jusqu'à présent que "TLE reste, mais il n'y a plus de place pour le grattage". [Ici](https://maspypy.com/atcoder-%E6%A9%992400%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97 Il est également écrit en% E3% 81% 9F), mais je pense que ce ne sera pas un problème à moins que ce ne soit à un niveau qui vire au jaune ou à l'orange. Je pense que python devrait être arrêté si vous êtes convaincu que vous pouvez virer au jaune en si peu de temps que vous n'avez pas le temps de changer de langue, mais combien de ces personnes sont-elles là dans le monde ... Aussi, j'ai personnellement un petit doute sur l'opinion selon laquelle "l'amélioration par un facteur constant n'est pas indispensable", et tant que je suis en concurrence avec le code que j'ai réellement écrit, j'ai imaginé une manière d'écrire afin qu'elle s'insère dans le délai en supprimant les caractéristiques du langage. N'est-ce pas naturel de le faire? Je pense. Même si la logique est correcte, je pense qu'elle devrait être incorrecte si la vitesse d'exécution est lente.

Ce que je pense de faire AtCoder

Simple et amusant

Depuis que j'ai résolu beaucoup de problèmes en étudiant pour des examens pendant une longue période, le système de récompense pour résoudre les problèmes est terminé. En attendant le juge, le jus de cerveau lorsque l'écran AC apparaît est toujours une grande motivation pour continuer AtCoder.

La qualité du code ne s'améliore pas beaucoup

Surtout dans le temps limité du concours, il est facile de copier et coller presque le même processus encore et encore, et d'augmenter le nombre de cas plus que nécessaire. Je ne pense pas que la compétence d'écrire du code propre puisse être appliquée à moins que vous n'en soyez conscient.

Pas très utile en pratique

Bien sûr, cela peut être utile selon le type d'entreprise, mais dans mon entreprise, le lien avec la DB / front et le framework sont plus importants, donc je ne pense pas que cela soit très utile en pratique. Eh bien, je pense que c'est le cas. Je sens que je le fais juste comme passe-temps

Objectifs futurs

Il y a tellement de choses que je n'ai pas encore étudiées, alors je veux continuer à augmenter ce que je peux faire et aller aussi loin que je peux. N'est-ce pas en quelque sorte bleu? Je sens ça.

c'est tout. Si vous avez une idée, je vais l'ajouter.

Recommended Posts

Une histoire qui est devenue bleu clair en 4 mois après avoir démarré AtCoder avec python
Bleu clair avec AtCoder @Python
Il est devenu bleu après 9 mois d'histoire d'Atcoder (python)
Une histoire qui a disparu quand j'ai spécifié un chemin commençant par tilda (~) en python open
Créons un script qui s'enregistre avec Ideone.com en Python.
L'histoire de la création d'un module qui ignore le courrier avec python
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
L'histoire de la création d'un Bot qui affiche les membres actifs dans un canal spécifique de Slack avec Python
[Python] Un programme qui crée des escaliers avec #
Gérer les "années et mois" en Python
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
[Édition DSU] Lecture de la bibliothèque AtCoder avec un codeur vert ~ Implémentation en Python ~
Résoudre AtCoder ABC168 avec python (A ~ D)
Un rappel de ce que je suis resté coincé lors du démarrage d'Atcoder avec python
Un monde typé qui commence par Python
"Première recherche élastique" commençant par un client python
Jusqu'à ce qu'il devienne bleu clair avec AtCoder
Nombre de mots qui ne compte que les mots commençant par une majuscule en python
Une histoire déroutante avec deux façons d'implémenter XGBoost en Python + notes générales
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Une histoire à laquelle j'étais accro après la communication SFTP avec python
[Python] Récupérez les fichiers dans le dossier avec Python
Un mémo que j'ai écrit un tri rapide en Python
[Python3] Une histoire bloquée avec la conversion du fuseau horaire
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python
Un programme qui supprime les instructions en double en Python
Une histoire sur la gestion des données binaires en Python
Travaillez dans un environnement virtuel avec Python virtualenv.
Créer une nouvelle page en confluence avec Python
Une histoire remplie de valeurs absolues de numpy.ndarray
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
Formules qui apparaissent dans Faire des mathématiques avec Python
[Fenwick_Tree] Lecture de la bibliothèque AtCoder avec un codeur vert ~ Implémentation en Python ~
L'histoire qui s'inscrit dans l'installation de pip
Créez un fichier exe qui fonctionne dans un environnement Windows sans Python avec PyInstaller
[Python] Ne laissez que les éléments commençant par une chaîne de caractères spécifique dans le tableau
Comment convertir / restaurer une chaîne avec [] en python
Jouer avec l'API d'intelligence artificielle locale de l'utilisateur en Python
Créez un Slackbot simple avec un bouton interactif en python
Essayez d'incorporer Python dans un programme C ++ avec pybind11
Utilisez Cursur qui se ferme automatiquement avec sqlite3 en Python
Notes sur les connaissances Python utilisables avec AtCoder
Une histoire qui a eu du mal avec l'ensemble commun HTTP_PROXY = ~
L'histoire de la création d'une partition de type Hanon avec Python
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Je veux travailler avec un robot en python.
Que contient cette variable (lorsque le script Python est en cours d'exécution)
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur
Le point addictif du "raisonnement de Bayes expérimenté en Python"
Un serveur qui fait écho aux données POSTées avec flask / python
Un mémo que j'ai touché au magasin de données avec python
Résoudre Atcoder ABC176 (A, B, C, E) en Python
Exécuter un fichier Python avec une importation relative dans PyCharm
Une histoire qui a arrêté mon cœur après la mise à niveau d'OpenStack
Créez un faux serveur Minecraft en Python avec Quarry
Une histoire que je voulais faire une fonction comme before_action utilisée dans les rails avec django [Débutant apprend python avec un livre de référence]
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!