日々精進

新しく学んだことを書き留めていきます

プログラミングコンテストチャレンジブック演習「fence repair」

今回のお題はこちら。

この問題解いてて知ったんだけど、変数の値の入れ替えを↓のように書けるのはかなり嬉しいですね。

a,b = b,a

入れ替え以外にも複数の代入文を一つにまとめるとわかりやすくなる場合がありました。
これは今後も使っていきたい。

L = [8,5,8] #input

$l = L.sort
ans = 0
while($l.length > 1)
  i1st = 0
  i2nd = 1
  $l[i1st], $l[i2nd] = $l[i2nd], $l[i1st] if $l[i1st] > $l[i2nd]
  for i in 2..($l.length - 1)
    i1st, i2nd = i, i1st if $l[i] < $l[i1st]
    i2nd = i if $l[i] < $l[i2nd]
  end
  ans += $l[i1st] + $l[i2nd]
  $l[i1st] = $l[i1st] + $l[i2nd]
  $l.delete_at(i2nd)
end

puts ans