概要
2025年5月3日(土)21時から開催されたAtCoderコンテストに参加しました。
結果は A・B問題の2完。ギリギリではありますが、茶色を維持しています。
AtCoderには nullpointerlog という名前で参加しています。
この記事では各問題の所感と反省点を振り返っておきます。
A・B問題:なんとか2完
A問題
少し時間がかかりましたが、英小文字に対応するサイズ26のテーブルを作り、入力文字を消しこんでいく方針で解きました。
解説にあるような2重ループの方が、よりシンプルに書けたかもしれません。
B問題:マトリックスの回転
2次元配列を90度ずつ最大4回まで回転させ、それぞれの状態とTを比較して違いの数を求め、最小の操作回数を選ぶ問題。
ロジックはすぐに思いつきましたが、90度・270度回転時のインデックス変換のコーディングと確認に少し時間がかかりました。
こういった典型実装こそ、丁寧さが問われると実感しました。
C問題:グラフ問題の落とし穴
問題文の要点は:
- 各頂点が ちょうど2本の辺 を持ち
- それらが 1つのループ(一筆書き)として閉じているか
私は 「各点の次数が2なら、全体がループになっているはず」 と早合点して判定した結果、WA(Wrong Answer)が4回。
結果的には、
各点が2本ずつの辺を持っていても、**複数の閉路(ループ)**ができてしまえば「一筆書きで一周」にはならない。
ということに、最後まで気が付きませんでした。
作問者の罠に見事に引っかかりました。
✅ 正解パターン(1つのループ)
❌ 失敗パターン(2つの独立したループ)
D問題:整理はできたが実装に至らず
C問題でWAが続き、手が止まったためD問題にも目を通しました。
問題を読むと、
- 各動物園に 0回・1回・2回訪問する全パターンを探索する問題。
という構造だと理解できました。
ただ、訪問パターン数や条件判定の複雑さ、インデックス管理の難しさから、バグなく25分以内に実装しきる自信が持てず、今回は見送りました。
後日、落ち着いて解き直しましたが、やはり 動物園(N)と動物(M)のインデックス混同によるバグ が多発。
実装力の課題が浮き彫りになりました。
学びと今後
今回の反省点・学び:
- 「すべての点の次数が2である」という条件だけでは判定として不十分であり、それだけで良いなら簡単すぎるのでは?という視点も必要(C問題)
- 幅優先探索(BFS)などを用いて1つのループをたどり、全ての点に到達できるかなど、別解をすぐに試せるコーディング力が必要(C問題)
- 問題文からデータ構造(NとM)を明確に理解し、整理してからコーディングに入るべき(D問題)
次回のABCでは、C問題以上の突破を目標に、グラフ構造の理解と実装力の強化をして臨みます。
AtCoderステータス
- アカウント名:nullpointerlog
- 現在のレート:茶色 (502 → 493 / -9)