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 1 year has passed since last update.

RubyでAtCoder ABC272(A, B, C)を解いてみた

Last updated at Posted at 2023-04-29

はじめに

Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC272のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。

A - Integer Sum

a-272.rb
gets
- puts gets.split.map(&:to_i).sum
+ puts gets.split.sum{ |e| e.to_i }

B - Everyone is Friends

b-272.rb
n, m = gets.split.map(&:to_i)
hash = {}
m.times do
  array = gets.split.map(&:to_i)
  k = array.shift
  for i in 0..k - 2
    for j in i + 1..k - 1
      next if hash[[array[i], array[j]]]
      hash[[array[i], array[j]]] = true
    end
  end
end

puts hash.uniq.size == (1..n - 1).sum  ? "Yes" : "No"

解説

連想配列hashを使って、同じ舞踏会に参加したかを記録しています。最後に、連想配列の大きさが場合の数と一致していればYes、一致していなければNoを出力します。

C - Max Even

c-272.rb
# 修正前
n = gets.to_i
a = gets.split.map(&:to_i).sort.reverse

e = a.select{ |factor| factor.even? }.sort[-2..] || [-1]
o = a.select{ |factor| factor.odd? }.sort[-2..] || [-1]

puts [e.sum, o.sum].max
c-272.rb
# 修正後
gets
a = gets.split.map(&:to_i)

array = a.partition{ |i| i.even? }
e = array[0].max(2)
o = array[1].max(2)

e = e.size == 2 ? e.sum : -1
o = o.size == 2 ? o.sum : -1
puts [e, o].max

解説

和が偶数となるのは偶+偶または奇+奇の場合なので、selectメソッドを使ってaの要素のうち偶数で大きいもの2つおよび奇数で大きいもの2つを取得しています。なお、そのような要素が2つ以上ない場合はnillとなってしまうので、nillにならないように-1を設置しています。最後に、和の最大値を出力すればOKです。

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?