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

Posted at

はじめに

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

A - "atcoder".substr()

a-264.rb
l, r = gets.split.map(&:to_i)
s = "atcoder"
puts s[l - 1...r]

B - Nice Grid

b-264.rb
r, c = gets.split.map(&:to_i)

def grid(a, b)
  if a == 1 || a == 15
    puts "black"
    exit
  elsif (a == 3 || a == 13) && 3 <= b && b <= 13
    puts "black"
    exit
  elsif (a == 5 || a == 11) && 5 <= b && b <= 11
    puts "black"
    exit
  elsif (a == 7 || a == 9) && 7 <= b && b <= 9
    puts "black"
    exit
  end
end

grid(r, c)
grid(c, r)
puts "white"

別解として公式解説を参考にしました。中央のマスから黒色のマスまでの距離が奇数であることを利用しています。

別解
r, c = gets.split.map(&:to_i)

if [(r - 8).abs, (c - 8).abs].max.odd?
  puts "black"
else
  puts "white"
end

解説

黒色となる部分を列挙して探索しています。

C - Matrix Reducing

c-264.rb
h1, w1 = gets.split.map(&:to_i)
a = Array.new(h1){ gets.split.map(&:to_i) }
h2, w2 = gets.split.map(&:to_i)
b = Array.new(h2){ gets.split.map(&:to_i) }

(0..h1 - 1).to_a.combination(h2).each do |y|
  (0..w1 - 1).to_a.combination(w2).each do |x|
    flag = true
    h2.times do |i|
      w2.times do |j|
        if a[y[i]][x[j]] != b[i][j]
          flag = false
          break
        end
      end
      break if !flag
    end
    if flag
      puts "Yes"
      exit
    end
  end
end
puts "No"

解説

h, wがともに10以下と小さいので全探索できます。combinationメソッドを使って順にbと一致する場合があるか調べていき、一致する者があればYesを出力して終了、最後まで一致するものがなければNoを出力します。

D - "redocta".swap(i,i+1)

d-264.rb
s = gets.chomp

ans = 0
"atcoder".chars.each do |c|
    ans += s.index(c)
    s.slice!(c)
end
puts ans

解説

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

文字を目的の文字列(この問題ではatcoder)におけるインデックスに置き換えて探索する転倒数を利用して解くことができます。

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?