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

Posted at

はじめに

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

A - Job Interview

a-298.rb
n = gets.to_i
s = gets.chomp.chars
puts s.include?("o") && !s.include?("x") ? "Yes" : "No"

解説

問題文の通りに実装すればOKです。

B - Coloring Matrix

b-298.rb
n = gets.to_i
a_array = Array.new(n) { gets.split.map(&:to_i) }
b_array = Array.new(n) { gets.split.map(&:to_i) }

4.times do |i|
    flag = true
    n.times do |j|
        n.times do |k|
            flag = false if a_array[j][k] == 1 && b_array[j][k] != 1
        end
    end
    if flag
        puts "Yes"
        exit
    end
    a_array = a_array.reverse.transpose
end
puts "No"

解説

4回の操作で元に戻るので繰り返すのは4回だけで大丈夫です。また、回転は、reverseメソッドとtransposeメソッドを使って再現しています。

C - Cards Query Problem

c-298.rb
n = gets.to_i
q = gets.to_i
boxes = Hash.new{|h, k| h[k] = []}
cards = Hash.new{|h, k| h[k] = []}

q.times do
    t, i, j = gets.split.map(&:to_i)
    case t
    when 1
        boxes[j] << i
        cards[i] << j
    when 2
        boxes[i].sort!
        puts boxes[i].join(" ")
    when 3
        cards[i].uniq!
        cards[i].sort!
        puts cards[i].join(" ")
    end
end

解説

(他の方の提出結果を参考にしました)

箱に関する情報とカードに関する情報を保持する配列をそれぞれboxes、cardsとして用意していき、問題文の通りに情報を更新していくことで実装することができます。なお、cards[i].uniq.sort.join(" ")のように書くとTLEしてしまいます。破壊的メソッドを使うことでTLEは解消できるようです(データのコピーのせいで時間超過になってしまうのかな?)。

0
0
1

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?