##はじめに
AtCoder Beginner Contest 206のB問題を解いてみました。
様々な答えはあるかとは思いますが、自分の回答を説明していきたいと思います。
問題文は下記リンクから飛んで確認してください。
それではよろしくお願いします!
##B - Saving
まずは入力を受け取る文です
n = gets.to_i
まずは空の貯金箱と日にちをカウントしてくれる変数を用意します。
1日目から始めるのでdayにはあらかじめ1を入れときます。
ポイントはdayは日数と貯金する額の両方の役割があることです。
n = gets.to_i
bank_balance = 0
day = 1
次に入力された数字(目標貯金額)以上、貯金箱にお金が貯まった時に、それが何日目かを出力することが求められているので、bank_balanceがn円以上になるまで繰り返し処理でdayに1円ずつ足していきます。
day = その日に貯金する額なので、dayをbank_balanceに掘り込んでいきます。
bank_balanceがn円以上になったら処理を止めて、dayを出力させます。
n = gets.to_i
bank_balance = 0
day = 1
while n > bank_balance do
bank_balance += day
if n <= bank_balance
puts day
else
day += 1
end
end
if文で条件分岐をし、貯金額(bank_balance)がnを上回らないうちはひたすらelseにふって、+=1しまくります。
これで完成です。
##最後に
他にもっと簡略化できる方法や、わかりやすい方法があれば教えていただけると幸いです。
自分では気づかないんですが、なんでこんな処理してるのか指摘されて初めて気付く鈍感野郎なので、ガンガン指摘してください!
よろしくお願いします。