AtCoderのStreakが200日目になった
はじめに
2020年7月26日にAtCoder ProblemsでカウントされているStreak(AtCoderの連続新規AC)にて200日を達成しました.半年以上1日も欠かさず競技プログラミングに取り組んでいるのは結構頑張っている方ではないでしょうか?100日達成時の記事を読み返したところ,差分から自分の成長点を知れてよかったので,300日目の自分のために現状と考えていることなどを文章に起こします.私については前回の記事に書いてありますので,この記事が初めての方はそちらも併せて読んでいただけると嬉しいです.
前回の記事↓
私が競技プログラミングをやっているモチベーション(2020/7/26時点)
競技プログラミングを取り組み始めた当初の,コーディング力の向上や基礎的なアルゴリズムの学習の目的は十分に達成できたと感じています.
今のモチベーションは以下の3点です.
- ここまで繋げたStreakを切ったら二度と競プロをやれないかもしれない.
- 学部生の間に青色だと結構強そう.
- 物事をやるなら継続してある程度のレベルまでやるべきだと思っているので,競技プログラミングでは最低で水色になりたい.
100日間の結果
取り組んだコンテンツ
AtCoderのコンテンツ
読んだ書籍・記事など
- 螺旋本,蟻本を必要に応じてつまみ食い.
- Web-DB PRESS vol.115 (chokudaiさんの記事の回)
- 必要に応じてアルゴリズムの解説記事.
- 以下の記事から60問.
主な成果
AtCoderにて
- レーティング:672 -> 1016(+344)
- パフォーマンスの自己ベスト:1144 -> 1704(+560)
- パフォーマンスの平均が1色分ほど上がりました.
- 観測している範囲での大学内レーティングが1位になりました.
特に新しいアルゴリズムを習得したわけでもないので,慣れで伸びたのかなと思います.bit全探索や幅優先探索などの基礎的な実装がスラスラと描けるようになりました.
前回の目標から
前回立てた目標は
- 水パフォを出す.
- 茶色パフォーマンス以下を出さない.
- レーティング900以上.
でしたが水パフォとレーティング900は達成することができました.
考えていること
モチベーションの管理
授業がオンラインになったことによる課題の増加,長年推しているゲームのリマスター版が発売されるなど,この100日間(特に後半50日)は忙しく,精進が疎かになり,Streakも簡単な1問で繋ぐ惰性になってしまっている日も多かったです.そこで対策として,些細なご褒美を自分に与える意味合いで1問解くごとにポケモンカードのパックを1つ開けるという習慣を始めました.これのおかげで終盤2週間のモチベーションは程々に戻すことができ,3箱分(70パック程度)の問題を解くことができました.お金がかかって仕方ないので欲しいものリストに入れておきます...そういえばAtCoderの問題解いてどうして(株)ポケにお金を落としているんだ...?
なぜポケモンカードを開けることがモチベーションに繋がるのか
次の100日間でやること
課題
- 100日前に引き続きE問題に手を付けられていないことによるパフォーマンスの頭打ち(たまにリアルタイムで500点問題が解けることがあるが打率が低い).
- 高難易度の問題に時間をかけて考察する習慣を付けられていない.
- 普段の過去問を解く時に緊張感がないため,本番の緊張感に負けている.
- 動的計画法が苦手.(二項間漸化式くらいになるとさっぱりわからん).
- 二分探索がバグる.(二分探索がバグる)
- コードにベタ書きするデバッグ方法が遅いのでC++の言語機能を学習する.
取り組むこと
- 引き続きStreakを切らさない.
- 夏休み期間中は朝活に極力参加し,緊張感を持って問題に取り組む習慣を作る.
- レッドコーダー記事中級の残りの50問をやって基礎的な実装力を固める.
- Twitterでよく見る「~diffの問題全部埋めました」を自分も茶緑についてやる.
- 余裕があればC++の解説書を1冊読みたい.
目標
- C問題までを15分以内に確実に解ききる.
- D問題の打率を8割くらいに保ち点数で水パフォを安定させる.
- Eを解いて青パフォを出す.
- レーティング1250以上.
終わりに
単位もあらかた取り終わったので,ここから年末まで卒論以外の時間たくさん精進するぞ!!!
AtCoderのStreakが100日目になった
はじめに
2020年4月17日にAtCoder ProblemsでカウントされているStreak(AtCoderの連続新規AC)にて100日を達成しました.競技プログラミングを真面目に勉強し初めて100日たったので,やってきたことの振り返りと次の100日間でやることを考える材料にするために一度文章に起こしました.(要約:競技プログラミングの問題を100日連続で解いたので振り返りと感想を書きました.)
指摘点やアドバイスなどあれば記事のコメント欄かTwitterのリプライにて教えていただけますと幸いです,よろしくお願いします.
記事を書いている人について
関西の大学にいる学部4回生 だいちゃん です.
大学生からパソコンを触り始め,これまでiOSアプリをリリースしたり,Web系企業のサマーインターンに行ったり,最近では元バイト先の友人たちとWebアプリの開発をしているなど,プログラミングを用いて何かをすることが好きです.研究は3次元の点群データに関することをしています.情報系の学部ですが文理融合の学部で数学の単位から逃げてしまったので数学力は大学受験から止まっています,大変です.
私が競技プログラミングをやっているモチベーション(2020/4/17 地点)
主に以下の3点です.
- もの作りのプログラミングに時間をかけていたのでフレームワークやツールの知識はそこそこについていたが,研究の開発などでデータを扱うプログラムを書いた際にコーディング力が低いこと気がついた.
- もともとコーディングに限らず計算機科学の分野の普遍的な知識が欠けていることをコンプレックスに感じていて,その分野の勉強の一つとしてデータ構造やアルゴリズムの学習をしようと思った.
- 先輩と来年の2021/03/31を締め日にしたレートの勝負をしていて,勝って靴を舐めさせたい.
100日間の結果
取り組んだコンテンツ
Streakを続ける前にも少しやっていたのでAC数はこれまでの合計です,期間中取り組んだ問題は400問弱です.このStreakを始める前は竸プロについて特に勉強していなかったので,学習したアルゴリズムなどに関してはこの100日の間のものです.
AtCoderのコンテンツ(551AC)
- リアルタイムのコンテストに16回参加
- APG4bを最新の更新まで1順
- AtCoder Beginner Contest 478問
- AtCoder Regular Contest 65問
- AtCoder Grand Contest 10問
- その他,企業コンテストの過去問やEDPCなどの問題
読んだ書籍・記事など
その他
- 所属している勉強会で竸プロ合宿をやった.
- 最近1週間ほどはバチャコンに毎日参加している.
勉強したアルゴリズム・データ構造
- C++のSTLに搭載されている基本的なデータ構造
- GCD・LCMや素数判定など
- 全探索
- 二分探索
- DFS・BFS
- 動的計画法
- ダイクストラ法
- ワーシャルフロイド
- 逆元(modint)
- 累積和
- しゃくとり法
- グラフの隣接行列,隣接リストでの表現
学習の方針は以下の記事を参考にさせていただきました,ありがとうございます.
主な成果
AtCoderにて
- レーティング:395 -> 672(+277)
- パフォーマンスの自己ベスト:738 -> 1144(+406)
- パフォーマンスの平均も1色分ほど上がりました.
日常において
- 毎日欠かさずパソコンを開いてプログラムを書く習慣ができた.
- データ構造やアルゴリズムに関する知識が増えた.
- データ処理に関するプログラムを書くスピードがかなり早くなった.
感じたこと
毎日欠かさず新規ACをすることについて
他の方の精進ブログにも書いてあることですが,1日1回竸プロに取り組むことが出来ることを習慣にするにはとてもいい手段だと感じています.自分の場合,虚無ACで繋いでしまう日も15日くらいありましたが,どこかで見た「やらない努力より,やる惰性」がいいなと思っているので毎日パソコンを開くきっかけにもなるので有効な習慣だと考えています.また最近,朝活を1週間くらい続けていますが,こちらは継続するのにかなり気力がいるので大学の休校期間(4月中)だけ続けようと思います.
学習コンテンツについて
競技プログラミングをする上で,コンテスト参加,過去問(解説動画付き)のコンテストサイトに加えて,有志の解説記事やAtCoder Problemsの便利なサイトなど学習しやすいコンテンツが揃っていると感じました.いつも大変お世話になっております.
以下に私が普段使わせていただいているサイトの一覧を記載します.友人から教えてもらって一気に勉強しやすくなったので,初心者の方など見てみるといいかもしれません.
AtCoder Problems
https://kenkoooo.com/atcoder/#/table/
けんちょんさんのQiitaの記事(ピックアップの過去問精選10問は初学者に特におすすめ)
次の100日間でやること
課題
- E問に手が付けられないことによるパフォーマンスの頭打ち.
- 深い考察が出来ていないことによるコーナーケース回で事故る.
- 50行を超えるプログラムを時間内に書ききれない.
- アルゴリズムは足りているが,使い所を逃すことが多い.
取り組むこと
- 引き続きStreakを切らさない.
- 4月中は朝活に毎日参加する.
- 考察を深めるためにコンテスト後の解説をE, Fまで取り組む.
- 水diff以上の問題に取り組む.
目標
- コンテスト中にE問を解き,水パフォを出す.
- 茶色パフォーマンス以下を出さない.
- レーティング900↑
終わりに
締め括りの言葉は気が緩みそうなので「水色になりました」の記事で書きます.
ひとまず,ここまで読んでいただきありがとうございました.
株式会社リブセンスの「プロダクトエンジニア養成講座」に参加してきました。
はじめに
2019/09/02~10/04に株式会社リブセンスのサマーインターンの一つである「プロダクトエンジニア養成講座」の Webアプリケーションエンジニアコースに参加させていただきました。 そこで勉強できたことについて共有します。
記事を書いた人について
関西の大学にいる情報系の学部3回生です。iOSのアプリをリリースしたり、Djangoでサービスを作ろうとしたりいろいろ勉強しています。 だいちゃんという名前は小学生にプログラミングを教えているときのメンター名から来ています。 Railsは今回のインターンで初挑戦でした。ついでに、ブログ記事を書くのも初めてです。 よろしくお願いします!
プロダクトエンジニア養成講座について
参加した講座はこちらの記事ものです。
今年が1回目だということだったので1期生ということになりました。ちょっと特別感があって嬉しいです。
内容
4週間でリブセンスの開発の現場で行われているプロダクト開発の流れや手法を1つのアプリケーションを作成する中で学んでいく、完全に研修型のインターンシップでした。
Webアプリケーションエンジニアコースでは、メンターがインターン生2人に対し1人ついていただき、とても手厚いサポートが受けられました。
期間中のおおまかな流れとしては、
1週目は期間中に開発するプロダクトの設計をリーンキャンパスやインセプションデッキなどのフレームワークを座学しつつと手を動かしながら考え、
2,3週目はスプリント計画に基づきながら3人のモブプログラミング形式で実際にコードを書く開発を進めました。
4週目は個人でそれまでに開発していたプロダクトのブラッシュアップをプルリクエストベースの開発で行いました。
詳しい内容はメンターの方がインターンの資料をQiitaに公開してくださってるのでそちらもどうぞ!
参加した動機
参加に至った経緯としては、下記のインターン探しの基準に当てはまっており、かつ選考に合格できたことです。
サーバーサイドがやりたい。
プログラミング自体の勉強は自分でしていたが業務に関わった経験がなく自信がなかったので、実務中心というよりは丁寧に教えてもらえるインターンに行きたい。
プロダクトの立ち上げの過程に興味があるので技術のみにフォーカスするよりはプロダクト開発の全体を扱っている。
宿泊を準備していただける(お金のない地方学生にとって本当にありがたいです。。。)
このインターンはこれらのようなモチベーションを持っている人にとっては最高の経験になると思います。
会社について
株式会社リブセンスは「あたりまえを、発明しよう」というビジョンのもとマッハバイト、転職会議、転職ドラフトのような人材サービス、 IESHIL、DOOR賃貸のような不動産事業を中心に運営されている会社です。
感じた雰囲気
インターン期間中だけで、有志の社員さんが主催の音楽イベントやTech Awardという部署の成果発表を兼ねた社内LTがあり、社内の交流の機会が多く、お互いを評価する仕組みがしっかりとある印象を持ちました。そこに参加させていただき、エンジニアに限らずいろいろな方からお話を聞けたことも非常にありがたかったです。また、裁量労働制が取られていることから、チーム内で合意がとれていればよいということでエンジニアの方の出勤時間に融通がすごく効いていることに驚きました(最近では当たり前なのかもしれませんが...)
学べたこと
このプロダクト養成講座の4週間から学べたこととして、リーンキャンバスやインセプションデッキのようなプロダクト設計のフレームワーク、リブセンスで行われているアジャイルな開発手法、モブプログラミング、Railsに関する技術的事項、エンジニアのお作法など様々なものが挙げられます。 なかでも特に勉強になったことは、4週間もの期間をメンターに業務時間中ほぼ張り付きで指導してもらえたことから学べたことで、モブプログラミングからは、現場のエンジニアがなにを考えていて、相手に前提知識としてどれくらいのレベルを求めているのか、効率よく作業するためにできることなどを知ることができ、またプルリクエストベースの開発の中ではレビュアーに対する思いやりのような、エンジニアのコミュ力とも言える部分など、学生の普段の自学では学べないことをその時々の作業の中からピックアップして丁寧に教えていただけました。ここで得た知見を今後の勉強の方針にしたり、すぐに使えるものは実践しようと思います。
終わりに
1ヶ月でプロダクトエンジニアになれたとは言い難いですが(そんなに甘くはないという意味で)、今回のインターンではプロダクトエンジニアになるきっかけには十分すぎるほどの経験をさせていただくことができました。
最後に、リブセンスの皆様、1ヶ月もの長い間最高の経験をありがとうございました。
また、機会がありましたらよろしくお願いいたします!