初めまして、koroshoと申します。
2021/12よりAtCoderを始め、2022/2/5のABC238で無事入茶する事が出来たので、2022/3現在のAtCoderへの取り組み方などについて振り返っていこうと思います。
はじめに
自己紹介
25歳のエンジニア志望の無職です。
一応ITの専門を出ていますが、いわゆる強いエンジニアとは程遠い存在です。
普段は個人でプログラミング学習やWebフレームワークを触ったりして過ごしています。
触った言語は習熟度が高い順にJava、Python3、Rubyなど。
バックグラウンド
- プログラミング自体は個人で2年以上経験あり
- 競技プログラミングはAtCoderが初めて
- PaizaスキルチェックだとJavaでAランク、PythonでBランクの問題が解ける程度
- 一応FE、APの資格は所持
なぜ始めたか
転職活動で志望していた企業さんで社内でAtCoderをする文化があると耳にしたため。
そもそもAtCoderの事は昔友人から紹介されて知っていたのですが、その時はそれ程興味が無くいずれやろうと思ったままになっていました…
最初にレートについて色々調べた結果、最低限色が付いてないと何も保証出来ないということでまず茶コーダーを目指していました。
使用言語、環境等
言語はPython3(Pypy3)で参加しています。
当初選んだ理由は人気がある言語だから身につけたいとかそんな理由でした。
現在は以下のような長所・短所がある言語だと考えています。
長所:直感的に書ける所、便利な標準ライブラリが充実している所。
短所:動作自体がそこまで早くはないので競プロだと不利。D問題などでよく使われる平衡二分木(C++におけるstd::set
)が標準ライブラリに無い。
コーディング環境ですが、現在はコードテストページにベタ書きでコードを書いて提出しています。(明らかに非効率なのでおすすめしません)
この方法は不自由かつ事故が多いのでいずれVSCodeなどに移行する予定です。
取り組み方
まず最初に、決め事として参加できるコンテストには全て参加する方針を立てて取り組み始めました。
初参加のABCでは90分かけてA、B問題の2完という悔しい結果でした。
なので私の場合はA、B問題を安定して正解できるようにした後にアルゴリズムに取り組む事に決めました。
A、B問題を解く為に必要なのは場数だと思うので、過去問を解いて入出力や配列やfor文等に慣れていくのがいいと思います。
(過去問を解く際にはAtCoder Problemsを使うのがおすすめです。)
また、同時進行でAtCoder ProblemsのTrainingのEasy問題を埋めていました。
A、B問題が安定した後は本格的にアルゴリズムの勉強を始め、C問題の過去問を解きながら競プロ典型(~★3)などを解き始めたりしていました。
これ以降は所謂アルゴリズムを「知らないと解けない」問題が増えていたので、30分から1時間考えて解けなかった場合は解説を見てACするようにしていました。
「知らないので解けない」から「知ってて解けない」、その次は「知ってて解ける」へとシフトしていくのが狙いなので、解答例を丸コピはせず、最低限考えながら写経するのがいいと思います。
私の場合はC問題が安定してきたぐらいの頃に入茶することが出来ました。
現在はD問題の壁にぶち当たって、モチベーション維持も課題になってきたため、毎日過去問を解いたり、TrainingのMedium問題を数問解くなど長く続ける事を目的とした学習に切り替えています。
積極的なステップアップを図るのであればAtCoder Problemsを使ってリコメンド問題や難易度が自分のレートと同色から一つ上の色の問題を解くなどもいいかなと思います。
レートへの意識
レートは他の方との比較材料ではありますが、自分と他人のレートを比較して落ち込むのはものすごく無意味です。
AtCoderには少ない参加回数で凄まじい速度でレートを上げる方が一定数存在しており、順位表を見ると特に顕著です。
そういった方は元々競プロ経験があったりする方が多数なので、それらを見て自分の成長速度に自信を無くすのはやめた方がいいです。自分なりに着実にステップアップしましょう。
各コンテストについて
ABC(AtCoder Beginner Contest)
主戦場です。
このコンテストの問題を解き進められるようになる事が殆どのユーザーの目標だと思います。
ARC(AtCoder Regular Contest)
ABCより発展的な難易度のコンテストです。
ABCと比較すると頻繁に配点が変わり、それに伴って難易度も激しく変化します。
また、必要な知識もABCとは違い数学的考察力がより重視されている印象です。
個人的に一定のスキルレベル(緑コーダー以上?)に達するまでARCにrated参加するのはおすすめしません。
A問題が解けるか解けないかによるperfの差が大きすぎる為です。
ギャンブル感覚で挑むのもありだと思いますが、私は実力をちゃんと身につけたいならunratedで落ち着いて参加するのがいいと考えています。
今後の目標
順当に緑コーダーに、できれば今年中に水コーダーまでたどり着ければと考えています。
ですが現在、D問題の壁にぶち当たった事によりモチベ管理という新たな問題にも直面しているので、とにかく長く続けていくことを念頭に精進したいと思います。
最後に
長文でしたが最後までお読み頂きありがとうございました。
私と同じような競プロ初心者の方の成長材料の一つにでも加えていただければ幸いです。