0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Ruby] AtCoder Beginner Contest 206 B問題

Posted at

##はじめに
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しまくります。
これで完成です。

##最後に
他にもっと簡略化できる方法や、わかりやすい方法があれば教えていただけると幸いです。
自分では気づかないんですが、なんでこんな処理してるのか指摘されて初めて気付く鈍感野郎なので、ガンガン指摘してください!

よろしくお願いします。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?