Atcoderに最近ハマっています。
パズル感覚で問題を解くのと、レーティングが数値で出るのが面白いですね。
期間は6ヶ月(25週間)とし、水色コーダーを目指します。
最近のABCでパフォーマンスが下がっており伸び悩んでいます。
筆者の学習歴
学習歴はこんな感じです。
まだまだ入門と言う感じですね。
・利用言語はPython3
・Pythonの利用は業務で少し
・学習は「みんなのPython」を読んだくらい
・ABCコンテストには数回参加した(解けるのは1〜2問)
競プロではC++を使う方が多いかと思いますが、筆者はPythonのシンプルさに感動したためPythonで取り組みます。
今日が2022年7月2日(土)で、9月20日までの半年の期間で学習を進めます。
毎週のAtCoder Beginner Contest(ABC)をペースメーカーにしていきます。
今週学習したこと
今週からABC Problemsで過去問に取り組み始めました。
ABC ProblemsでA問題を片付けました。
次はB問題を解くのと、アルゴリズムの分野別学習を進めます。
ABC ProblemsでA、B問題を80問(A:60問、B:10問)
さらに@e869120さんの記事で分野別学習を始めました。
レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】
基本アルゴリズム12個を学ぶと良いようです。
各記事ボリュームがありますが、まずは12個基本を押さえます。
全探索 | 二分探索 | 深さ優先探索 (DFS) | 幅優先探索 (BFS) |
動的計画法 (DP) | ダイクストラ法 | ワーシャルフロイド法 | クラスカル法 |
高速な素数判定法 | べき乗を高速に計算する手法 | 逆元を計算する手法 | 累積和 |
今週はDFS、二分探索を学習しました。
次の目標
前回のコンテストで茶色パフォーマンス(501)は出せました。
この調子でパフォーマンスを出せれば、あと4~5回で茶色(400)に昇級できそうです。
茶色への昇級は見えてきたので、目標を更新しました。
目標:緑色パフォーマンス(800以上)を出す
緑色パフォーマンス獲得のため、目標を整理しました。
・A・B問題を高速で解く(理想5〜10分以内)
・C・D問題をどちらかあるいは両方解く
まずはA・B問題を確実に解けるようにします。
C、D問題については簡単な場合両方、難しい場合はどちらかを解きます。
これで緑色パフォーマンスを取れる可能性があります。
今週のABC
ABCに参加してきました。
1問AC、灰色パフォーマンスでした。
B問題が解けなかったのが痛かったです。
AC:2問
パフォーマンス:381
レーティング:280→289(+9)
段級位:9級
結果
When
ABC開始からの経過時間が与えられる。現在の時間を出力せよ。
時間の分を出力するときに10時3分なら”10:3″がダメで”10:03″とする必要があることに手こずりました。
1WAしてしまい、9分かかってしまった計算です。
n=int(input())
a=1+n//60
b=n%60
if b<10:
b="0"+str(b)
print("2"+str(a)+":"+str(b))
Number Box
N行N列のマス目に数字が書かれている。
任意の位置からある一方向に進みN個の数字を繋いだ数値を得るとき、最大のものを出力せよ。
問題の制約から、全探索で実装すればいけそうと判断しましたが実装が難しそうと判断しスキップ。
Rotatioin
N,QとN文字からなる文字列Sが与えられる。Q個のクエリを実行せよ
残り時間はこの問題に取り組みました。
数列を並び替える素直なやり方しか浮かばず、これではN*Nの計算量になりTLEでした。
感想
A問題しかACできませんでした。
また、早とちりで提出してしまい、WAで時間のロスになったのも反省です。
来週学習すること
C、D問題以降も勝負できる様にするため、まずはAtCoder ProblemsでB問題を解いていきます。
その後は、DP、BFSなどのアルゴリズムの学習をします。
・AtCoder Problems