技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

競技プログラミング day1

問題

atcoder.jp

回答

a,b,c = gets.split.map{|n| n.to_i}
puts (x = c - (a - b)) < 0 ? 0 : x

流れ説明

■ 流れ1

 gets.split.map{|n| n.to_i}

実行時に打ち込まれた数値をint型に変更してa,b,cに代入 ちなみに以下の書き方でもOK

a,b,c = gets.split.map(&:to_i)

■ 流れ 2

puts (x = c - (a - b)) < 0 ? 0 : x

三項演算子を利用
1. (a - b) -> 容器1に容量bミリリットルの水を入れる。a -b = 容量Aに入る残り容量ミリリットル
2. c - (a - b) -> 容器2に入っているcミリリットルを容量1に写す
3. もし2の答えがマイナスの場合は0と表示させる(容量マックス状態)
4. もしマイナスでなければ容量Aに入る残り容量を表示させる。

学びポイント

意外と頭使うメモとペンで頭の中整理しないと辛い....
値受け取る箇所eachだとto_iが反映しなくてmapでないとn.to_iにならなかったけど。
なぜだろう....eachとmapの挙動の違いが原因だと思うけど...

a,b,c = gets.split.map{|n| n.to_i}