AtCoder: abc250 (Swift)

  • ここ数回参加できていなかったり、準備がギリギリになったりで最初に設定で手間取ってしまった
  • ここ最近はアルゴ式をコツコツやっているおかげが問題自体は順調に解けて4完
  • 緑になれたので自分ではとりあえずの目標クリア
  • Dまでは安定して解けるし、時間も割と残せている
  • 今後、水色を目指すためにはE以降の問題に取り組んでいきたい
  • とはいえ、最初の方の問題の方が解きやすいから、気軽なんだよなぁ

A - Adjacent Squares

  • 端でなければ隣にますがあるとということで+1

提出

B - Enlarged Checker Board

  • 計算量はあまり見ずに、B問題だったら力技で大丈夫だろうと押し切った
  • あんまり使ってないBool変数の .toggle() がパッと使えたのは嬉しかった
  • for文がネストされていくのはちょっと気持ち悪いけれど、解くまでの時間を重視して
  • ブロックごと、ラインごとに処理して、それらを組み合わせた方が実行時間は早そう
  • そっちの方が読みやすくなりそう

提出

C - Adjacent Swaps

  • 実際の配列と、それぞれの数字の位置を記録する配列の二つの配列を
  • swapAt(_:_:)を使おうと思っていたけれども、実装中にはすっかり忘れていた
  • とはいえ、値はすでに変数として持っていたから、そこまでの手間はなかったけれど
  • 逆に手間がないからこそ使い損ねたのかも

提出

D - 250-like Number

  • qの最大値を求めるのに q <= 1018 とせずに、 p = 2として、q <= 5 * 1017として、手元で計算してしまった
  • 実行時の計算量がそこまで変わるわけではないし、不要な手間だった
  • 素数の一覧が出せてからは計算量はそこまでないし、素直に解いて終わり
  • と入っても、計算量はそこまでに考えずに手元でテスト通ったらそのまま出してしまった
  • D問題とかなら一旦計算量とか落ち着いて考える癖をつけた方がいいかな
  • 二分木探索をされている方を見るとなるほど…と思わされる
  • guard p * p * p * p < N else { break }がないと通らない原因がいまいちわかっていない…

提出

E - Prefix Equality

  • コンテスト中は、メモリを多用する形しか思いつかず、ほぼ力技でACできず
  • 今日はちょっと時間切れなので、また後日取り組みたい

提出