コンテンツへスキップ

Javaばば挑戦中⑥

  • by

–2025/04/14

今日久しぶり快晴です。早速洗濯をして、家事をすませました。

今日、Atcoderの093回目を挑戦しようと思います。

やっぱりC問題に少し時間が掛かりそうです。

ABCという三つの数字に、以下の操作を何回行うと、すべて同じ数字になるという問題です。

①三つの中に、二つを選んで、それぞれ+1

②三つの中に、一つを選んで、それを+2

具体例を見てみると、

例えば、2,5,4の三つの数字に、どのように操作したら、同じ数字になるか、

考察すると、以下の流れになります。

もう一つの例を見てみる、

例えば、2,3,6という三つの数字に、どのように操作したら、同じになるか、

以上の2例の処理の共通点を洗い出すと、

①昇順して、一つ目と二つ目の数字をそれぞれ+1、

②上記の操作を二つ目と三つ目の数字が同じになるまで、繰り返す

③以上の処理が終えると、二種類の結果が考えられる、

 a)三つの数字が同じになる この場合、処理が終了となる。

 b)一つ目の数字が他の二つ数字より小さくなる、この場合、一つ目の数字を+2の操作を行い、その他の数字と同じか或は大きくなるまで繰り返す

④一つ目の数字がその他の数字より大きくなる場合、二つ目と三つ目の数字をそれぞれ+1、三つの数字が同じになるまで繰り返す

このようなロジックを組んで、正解になりました。

これは一体どんなアルゴリズムでしょうか?

解説を読んで、貪欲法というものになります。

以下のサイトを参考して、読み合わせて、いいのかなと思います。

貪欲なアルゴリズム(greedy)入門 | アルゴリズムロジック


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA