プログラミング漫遊記

思ったことや、勉強したことをつらつらと。

【AtCoder】入茶のちゃちゃちゃ

AtCoder Beginner Contest 290でめでたく入茶したので色変記事というものを書いてみます。

最初に断っておくと、ものすごい人のものすごい入茶記事ではなく、平凡な感じの記事ですのであしからず!!

自己紹介

  • haruguchi
  • 社会人
  • 使用言語 Ruby
  • 2022年の8月頃から本格的にコンテストに参加し始める

雑感

ABCのA問題とB問題を取りこぼしなく速く解けるようになったら茶色になったという感じで、特別難しいアルゴリズムは覚えてないです。 ただ、最近やたらグラフの問題は出るのでDFS(深さ優先探索), BFS(幅優先探索), UnionFindあたりは勉強しました。(忘れました)

RubyでA,B問題解く場合はEnumerableモジュールと仲良くなるのが一番大切で、やってくうちにいろんな便利メソッドと友達になれたのがよかったです。(tallyメソッド最高)

「数学できないとダメでしょうか?」ということをよく聞かれるのですが、できた方が得だなぁという印象です。ただし、AやB問題で求められる数学の知識はそんなになくて、中学数学全般と高校数学の数A分野あたりが役に立ちました。計算量が厳しい問題は少ないので、別の方法で愚直にコードを書けば問題ないのかなと思っています。

そのほかは、解説を数式で理解できるのが一番の強みだと思いました。たまに数式見ても理解できない時は解説放送見てますが、、

やったこと

やったことは単純でABCの過去問をやる。これだけです。

  1. 楽しんでやる
  2. プログラミングコンテストAtCoder入門
  3. ABCのB埋め

楽しんでやる

メンタル的な部分。楽しんでやれるように参加の仕方を考えました。

もともと、通っていたプログラミングスクール内(フィヨルドブートキャンプ)でモブプロをやりたくて、その題材に丁度良かったのがAtCoder ABCでした。 週1回モブプロ会を開催してA, B問題を解いてるうちに楽しいなーと思ったのが源流なので、この気持ちを大事にしながら参加しています。

haruguchi-yuma.hatenablog.com

昨年8月にWebエンジニアとして就職(転職)したばっかりで、まだまだ業務知識や周辺知識をキャッチアップしていく必要がありました。なので、時間の使い方として、AtCoderに全部のリソースを使うということはできませんでした。1日数問、問題を解くというスタンスで勉強しています。

プログラミングコンテスト AtCoder入門

8月頃、まずこれからやりました。

競プロで有名なけんちょんさんが著者で、ABCのA~Dあたりを対象に書かれています。 A ~ D で必要なアルゴリズムに一通り触れるという意味でとても勉強になりました。サンプルコードがPythonというのもありがたいポイントでRubyかJSしかわからない自分でもなんとなくの雰囲気でRubyに変換しながら理解できたのも大きなポイント。

Difficulty 600以上は飛ばしてやったので、もう1周どこかでやり直したい!

ABCのB埋め

定石ですね。ABC50から現在の問題までは全部解きました。

今年1月から1ヶ月間集中して、B問題を埋めていきました。仕事を終えたあと1時間程度で1日3~4問解いています。 「速く、正確に」解くということを目標にしたので20分で4問を目標にしていました。

残りの時間は解説を読んだり、他の方の回答を見て2,3パターンで実装できるように心がけました。

現在はC問題を埋めている最中です。

その他

鉄則本もやったんですが、難しくて到底全部は出来ず。わかるところだけのつまみ食い状態でした。緑になるためにまたチャレンジしたいです。

Kokura.rbで『問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本』を読んだのも楽しかったです。

こんな感じでやってます

<Acheivement> AC 555!!!

Acheivement
<Pie Charts>

B問題は大体解いた

AtCoder Pie Charts

<Difficulty Pies>

ほとんど灰色の問題しか解いてません!

Difficulty Pies

今後について

AtCoder界隈のコミュニティに入って入ってみたいなぁという思いがあります。バチャというものをみんなでやってる気がしてて、バチャって何かよくわかってないんですよね、笑

それが気になってます。

色に関しては緑までは絶対に目指そうと思っていますが、緑になったら次は水色、、、とかとか言ってそうで怖い。