paiza s を取りたい
仕事にも通じる面があるということと、単純な面白さからちょくちょくatcoderやpaizaなど、競技プログラミングに取り組んでいます。
大まかな競プロ歴ですが、
- 新卒の時研修で一緒だった方に、paizaを教えてもらう
- エンジニア経験1年弱くらい経った頃、転職活動の一環でpaizaの問題に取り組んでみる、当時はB問題が数個できる程度
- 転職し、一旦離れる
- 転職1年半後くらいにアルゴリズムを学びたいと思い立つ
- paizaは一度解くと再度挑戦できないため、atcoderに登録、コンテストにちょくちょく参加する
- atcoder beginner コンテストではおおよそC問題が解ける程度、ごく稀にD問題まで解ける
- 現状茶色の真ん中あたり
という感じで、つよつよでは全くないけど、少しはできるようになってきた程度と感じています。
まだまだですが、、、
atcoderだと茶色ということで、下から二番目の位置ですが、どうやら同じ色でも paiza で Sランクを取得した、という記事をちらほら見かけました。
そこで、僕自身はどうなのだろうとチャレンジしてみました。
昔できなかったリベンジも兼ねていざ!
結果
いけました。取り組んでいる問題数が少ない等々でレートが低く、査定年収はそこそこですがSランクを取ることができました。
paizaは当該ランクを一問でも100点を取れればそのランクになるので、Sランクを取れば最高!それでOKということではないことは承知しています。
しかし、実際取れると嬉しいものです。少しは自分の成長を感じられますし。
Sランクを取るまでにやっていたこと
少しは参考になるかもという思いで、ざっくりやっていたことを記載します。
- 競プロの問題になれる。問題を解く
- よく出るアルゴリズムを少し習得する
- paizaの出題形式(文体など)になれる
- 一度しか提出できないので、易しめの問題で確実に取りに行く
1について
結局はこれに尽きる、ということになりますが、やはり問題を解き競技プログラミングになれるのが一番だと思います。
特に、web開発の学習をしていても競技プログラミングができるわけではないというところで、最初躓いた気がします。
今だと競技プログラミングの学習が開発業務に活かされることがあるな、と両者の関連を感じますが、正直最初のweb開発学習と競技プログラミングは全く別物に感じました。
mvcモデルとか、web開発の知識と全然違うじゃん!と思った気がします。
初心者の頃作成したwebアプリでは、そんなに難しい処理も出てきませんし。
ですので、結局はatcoderでもpaizaでも、とにかく問題になれる・解くことは必要だと思います。
paizaでも学習コンテンツはありますし、atcoderでは日本語での解説動画もあるので、自己学習しやすい時代なのではないかと思います。ありがたや。
2について
paizaのSランク問題は数問しか触れていません(うち1つは0点だったりします。。。)が、「おそらくこのアルゴリズム使うんだな」みたいなことを思うことが多いです。
わかっても使えないことがあるので、ちゃんと自分で使えるようになることが大事だと思います。
自戒も込めて。
3について
paizaは問題の状況等についてイラストで説明があるなど、atcoderの文面よりフレンドリーな印象を受けます。(難易度がフレンドリーかは別ですが。)
ただ、ぱっと見で分かった気がする一方、細かい箇所を見落として×となることもあるので、少し慣れておくと安心な気がします。
4について
これはよく言われていることだと思いますが、paizaは一度提出した場合、その問題を再度提出できない(コードの提出や学習はできるが、ランクには反映されない)という仕様です。
コーディング力が高い人は一つ落としてもそこまで痛手ではないかもしれない(本来こちらが理想ですが)ですが、paizaは割と同じランクでも問題の難易度に差があります。
少し戦略的ですが、とにかくSを!という方は、Sの中で難易度低めのものを確実に解くという姿勢が割と大事かもしれないです。
詳細はかけないですが、僕もSランク問題だと難易度低めな問題でSランクを取りました。
一度提出したら二度とレート反映向けの提出ができないという制約は、緊張感をもたらしてくれるとともに、日々学習をちゃんと積んでから挑戦しようという意識にもなる気がしています。
終わりに
よく見る記事と同じ結果(というかSを取れたから記事になってる・している)になってしまいますが、なんだかんだで学習は必要ですね。
ただ、実際とれると純粋に嬉しいです。
atcoder茶色というと簡単そうな気もしますが、少なくとも1,2年前の自分では無理だったと思います。
少しでも参考になれば幸いです。