個のキューブを取り除く操作を何度でも行えます。このとき、取り除いたキューブの上にあったキューブは真下の物体の上に落下します。最大で何個のキューブを取り除けるでしょうか。入力は全て整数である。文字列Sに対して"01"もしくは"10"があったら取り除く、という操作を取り除く文字列がなくなるまでやる、という処理を忠実に行おうとすると、次の様になります。実行時間over)となります。制約をみると、今回は$10^5$と先ほどまでの範囲よりもだいぶ大きくなります。用意された入出力例は文字数が少なく、単純なデータだったため時間内に実行できましたが、他のケースで時間がかかりすぎています。今回のコードでは、"111...1100...000"('1'が5,000個、'0'が5,000個)のケースで一番時間がかかります。入力値を用意できればコードテストで確かめることができます。テストコードを得るためにコードが必要になる分量です。println(res)}ここで、競技プログラミングでよくある工夫が必要になります。スタックというデータ構造を使います。ScalaではListが対応します$^{(※2)}$。競技プログラミングはScalaの他にも様々な言語で参加することができますが、特にScalaで参加する際に気づいたことをいくつかコメントします。実行速度が早い言語です。実行速度が早い言語を用いた場合の想定解をそのままScalaで適用しても、TLEとなることが稀にあります。想定解を見直し、無駄な処理や工夫できる点を探してより良い解法を考える、という姿勢が大事になります。私の観測範囲では、まだどうしても間に合わないという問題にはあたっていないです。・Scalaでの参加者が少ない上の理由からもわかる通り、競技プログラミングで良い成績を納めるためにScalaで参加することは滅多にないです。実際にScalaでの参加者も少ないです。そのため、Scalaでの参加者の中で一番早く解いた人になりやすいです。しても解けない時に正解者の人のコードを参考にしようとしたら、まだScalaでの正解者がいなかった。いうことも結構起こります。まとめ競技プログラミングの問題をみてきました。これなら自分もできそうだな、楽しそうだな、などと思っていただければ幸いです。明日は@tsaitou1さんです。