れとろのメモ置場

とあるSEのメモ置場

東京海上日動プログラミングコンテスト2023(AtCoder Beginner Contest 299)

東京海上日動プログラミングコンテスト2023(AtCoder Beginner Contest 299)に参加しました。

結果

A,B,Cの3問正解でした。

ふと質問タブを見るとunratedとあって急にやる気がなくなっちゃった...

A - Treasure Chest

.|*からなる文字列が与えられるので|と|の間に*が含まれるかどうかを答える問題。

文字列を順番に見ていって1個目の|の後、2個目の|で出てくるまでに*が出てくるかどうかを確認して答えればよいと思う。

B - Trick Taking

色と値を持つカードが順番に場に出るので、条件を満たすのは何番目かを答える問題。

条件が

  • 色Tが出ていた場合は色Tのうち値が最大のカードを出した人
  • 色Tが出ていない場合は1番最初に出たカードと同じ色のうち値最大のカードを出した人

カードの枚数的に線形探索しても間に合うのでループ処理で1枚目のカードから順番に見ていく。
はじめは色Tが出ていない想定で1枚目と同じ色が出た場合は値を比較して最大値を管理しつつ、それを出したのが何番目なのかも管理しておく。
色Tが出た場合は値と、何番目かを控えて、以降は色Tが出てきた場合だけ値と何番目に出されたかを管理する。

最後に管理していた何番目なのかを出力する。

C - Dango

文字列として-とoを並べて団子に見立てて、最大何個の団子が連なっているのかを答える問題。 oを団子で-を串に見立てていて面白い。

解き方は2通りあるかなと思う。 1つは串の位置を記録して、串と串の間隔が最大いくつになっているかを答える。
もう1つはoが最大何個連続しているかを数えて答える。(全部串の場合や全部団子の場合に注意して答える)

文字列の処理ができればそれほど難しくはないと思う。 A問題で文字列の処理をやっているのでA問題を解けるなら+αできていればこの問題も解けるかなあ