(備忘録)問題解決のための「アルゴリズム数学」〜 3
問題
自分の回答
それぞれの色の枚数を数えて、それぞれの色を2枚選ぶ方法を算出して最後に合計を出力している (昨日学習したtallyが役に立つ)
gets h = gets.split.map(&:to_i).tally arr = [] h.each do |k, v| arr << v * ( v - 1 ) / 2 if v >= 2 end puts arr.sum
別解
こっちの方が分かりやすいかも
gets h = gets.split.map(&:to_i).tally sum = 0 h.each do |k, v| sum += v * ( v - 1 ) / 2 end puts sum