競技プログラミングを解こう part2
今回もAtCoderで問題を解いてみました〜
なんとか解けました!
問題文
高橋くんは、自動販売機でジュースを買ったときの音が好きです。
その音は 回 円で聞くことができます。
高橋くんは 円持っていますが、お気に入りの音を 回聞くと満足するため、 円で最大 回まで聞けるだけ聞きます。
高橋くんはお気に入りの音を何回聞くことになるでしょうか。
制約
- 入力は全て整数である。
入力
入力は以下の形式で標準入力から与えられる。
出力
高橋くんはお気に入りの音を何回聞くことになるか出力せよ。
入力例 1 Copy
2 11 4
出力例 1 Copy
4
高橋くんは 円以上持っているのでお気に入りの音を 回聞いて満足します。
入力例 2 Copy
3 9 5
出力例 2 Copy
3
高橋くんが満足できないこともあります。
入力例 3 Copy
100 1 10
出力例 3 Copy
0
Rubyで解いたので、答えと解説をしていきます。
まずはA B Cで入力できるようにしていきます。
A,B,C = gets.split.map(&:to_i)
次に出力ですね。
入力例 1 Copy
2 11 4
出力例 1 Copy
4
高橋くんは 円以上持っているのでお気に入りの音を 回聞いて満足します。
例1では
1回2円で聞くことができて、4回聞いたら満足します。
2円×4回で8円なので、8円以上あれば満足できます。
11円持っているので4回聞けますね。
これは1回の金額×回数の答えよりも、持っている金額が多ければ満足できると言い表すことができます。
つまり
if A * C <= B
puts C
と表現できます。
次は1回の金額×回数の答えよりも、持っている金額が少なかった場合に何回聞けるかを考えます。
入力例 2 Copy
3 9 5
出力例 2 Copy
3
高橋くんが満足できないこともあります。
例2では
1回3円で聞くことができて、5回聞いたら満足します。
3円×5回で15円なので、15円以上あれば満足できます。
しかし、9円しか持っていないので3回しか聞けません。
これは、持っている金額➗1回の金額で求めることができます。
つまり、
puts B / A
組み合わせると
if A * C <= B
puts C
else
puts B / A
end
これで高橋くんが音楽を聞く回数を求められますね〜
わかると楽しいですね!笑
少しづつ難しいのもチャレンジしていきます!!