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

Posted at

はじめに

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

A - Not Overflow

a-237.rb
n = gets.to_i
puts (-2) ** 31 <= n && n < 2 ** 31 ? "Yes" : "No"

B - Matrix Transposition

b-237.rb
h, _ = gets.split.map(&:to_i)
array = Array.new(h){ gets.split.map(&:to_i) }.transpose

array.each do
  puts _1.join(" ")
end

C - kasaka

c-237.rb
def counter_of_a(s, count = 0)
  while s[count] == "a"
    count += 1
  end
  return count
end

s = gets.chomp

left = counter_of_a(s)
right = counter_of_a(s.reverse)
s = "a" * [right - left, 0].max + s
puts s == s.reverse ? "Yes" : "No"

解説

最初に、左側から何個aが連続してあるか、右側から何個aが連続してあるかを求めておきます。そして、先頭にaをその差分の個数だけ加えた後のsが回文となっているかどうかを判定することで解くことができます。

D - LR insertion

d-237.rb
n = gets.to_i
s = gets.chomp.chars

ans = [n]
(n - 1).downto(0) do
  if s[_1] == "L"
    ans.push(_1)
  else
    ans.unshift(_1)
  end
end
puts ans

解説

末尾から考えることで答えが求まります。

具体的には、入力例1の場合、[5](R)->[4,5](L)->[4,5,3](R)->[2,4,5,3](R)->[1,2,4,5,3](L)->[1,2,4,5,3,0]のように対応する値をRのときは先頭に追加し、Lのときは末尾に追加すれば良いことがわかります。

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?