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 ABC254(A, B, C)を解いてみた

Posted at

はじめに

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

A - Last Two Digits

a-254.rb
puts gets.chomp[1..]

B - Practical Computing

b-254.rb
n = gets.to_i
array = []
for i in 0..n - 1
  answer = []
  for j in 0..i
    if j == 0 || j == i
      answer << 1
    else
      answer << array[i - 1][j - 1] + array[i - 1][j]
    end
  end
  array << answer
  puts answer.join(" ")
end

他の方の提出結果を参考にした別解になります。

combinationメソッドを使うことでもっと簡素に書くことができます。

別解
n = gets.to_i

n.times do |i|
  puts (0..i).map{ |j| [*1..i].combination(j).size }.join(" ")
end

解説

問題文にある通りにコーディングすることで実装することができます。

C - K Swap

c-254.rb
n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
b = Array.new(k) { [] }

a.each_with_index do |number, index|
  b[index % k] << number
end

b.each do |array|
  array.sort!
end

array_after_sort = []
n.times do |i|
  array_after_sort << b[i % k].shift
end
puts array_after_sort == a.sort ? "Yes" : "No"

解説

(公式解説を参考にしました)

最初にK飛びごとの要素を取得することで、バブルソートできる形にし、それぞれ配列bに格納します。このとき、bに含まれる各配列は必ず昇順にすることができます。最後に、bの要素をもとの順番に戻したものが、aをソートしたものと一致しているかどうかを判定することにより実装することができます。

0
0
0

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?