LoginSignup
5
2

More than 5 years have passed since last update.

AtCoder RubyでA問題ノック

Posted at

AtCoderのABCのA問題のみRubyでひたすら解いていく。

ポリシー

  • 短く
  • 可読性高く
  • 無駄なことをしない

問題と回答

001 積雪深差

puts readlines.map(&:to_i).reduce(:-)

002 正直者

puts gets.split.map(&:to_i).max

003 AtCoder社の給料

puts (gets.to_i + 1) * 5000

004 流行

puts gets.to_i * 2

005 おいしいたこ焼きの作り方

x, y = gets.split.map(&:to_i)
puts y / x

006 世界のFizzBuzz

puts gets.to_i % 3 == 0 ? :YES : :NO

007 植木算

puts gets.to_i - 1

008 アルバム

s, t = gets.split.map(&:to_i)
puts t - s + 1

009 引越し作業

puts (gets.to_i / 2.0).ceil

010 ハンドルネーム

puts gets.chomp + "pp"

011 来月は何月?

puts gets.to_i % 12 + 1

012 スワップ

puts gets.split.reverse.join(" ")

013 A

puts "ABCDE".index(gets.chomp) + 1

014 けんしょう先生のお菓子配り

a, b = readlines.map(&:to_i)
puts (a / b.to_f).ceil * b - a

015 高橋くんの研修

puts readlines.max_by(&:length)

016 12月6日

m, d = gets.split.map(&:to_i)
puts m % d == 0 ? :YES : :NO

017 プロコン

puts readlines.map { |l| l.split.map(&:to_i).inject(:*) }.inject(:+) / 10

018 豆まき

ss = readlines.map(&:to_i)
puts ss.map { |s| ss.sort.reverse.index(s) + 1 }

019 高橋くんと年齢

puts gets.split.map(&:to_i).sort[1]

020 クイズ

puts %w(ABC chokudai)[gets.to_i - 1]

021 足し算

a = []
[8, 4, 2, 1].inject(gets.to_i) do |r, n|
  (r / n).times do
    a << n
    r -= n
  end
  r
end
puts a.length, a
n = gets.to_i
puts n, [1] * n

022 Best Body

_, s, t = gets.split.map(&:to_i)
w = gets.to_i
as = readlines.map(&:to_i)

cnt = as.count do |a|
  w += a
  s <= w && w <= t
end
puts cnt

as.count do ~ end は直接 puts できなかった

023 加算王

x = gets.to_i
puts x / 10 + x % 10

024 動物園

a, b, c, k = gets.split.map(&:to_i)
s, t = gets.split.map(&:to_i)

puts a * s + b * t - (s + t < k ? 0 : c * (s + t))

025 25個の文字列

s = gets.chomp
n = gets.to_i

puts s[(n - 1) / 5] + s[n % 5 - 1]

026 掛け算の最大値

puts (gets.to_i / 2) ** 2

027 長方形

ls = gets.split.map(&:to_i)
puts (ls - [ls.sort[1]])[0] || ls[0]

028 テスト評価

puts [[:Bad] * 60, [:Good] * 30, [:Great] * 10, :Perfect].flatten[gets.to_i]

029 複数形

puts gets.chomp + "s"

030 勝率計算

a, b, c, d = gets.split.map(&:to_f)
puts [:DRAW, :TAKAHASHI, :AOKI][b / a <=> d / c]

031 ゲーム

a, d = gets.split.map(&:to_i).sort
puts (a + 1) * d

032 高橋君と青木君の好きな数

a, b, n = readlines.map(&:to_i)

l = a.lcm(b)
r = l
while r < n
  r += l
end
puts r

最小公倍数のメソッド 初耳学

033 暗証番号

puts gets.chomp.chars.uniq.length == 1 ? :SAME : :DIFFERENT

034 テスト

x, y = gets.split.map(&:to_i)
puts x < y ? :Better : :Worse

035 テレビ

w, h = gets.split.map(&:to_f)
puts w / h == 4 / 3.0 ? "4:3" : "16:9"

036 お茶

a, b = gets.split.map(&:to_f)
puts (b / a).ceil

037 饅頭

a, b, c = gets.split.map(&:to_i)
puts c / [a, b].min

038 お茶

puts gets.chomp[-1] == "T" ? :YES : :NO

039 高橋直体

a, b, c = gets.split.map(&:to_i)
puts (a * b + b * c + c * a) * 2

040 赤赤赤赤青

n, x = gets.split.map(&:to_i)
puts [n - x, x - 1].min

041 添字

s, i = readlines
puts s[i.to_i - 1]

042 和風いろはちゃんイージー / Iroha and Haiku (ABC Edition)

puts gets.split.map(&:to_i).sort == [5,5,7] ? :YES : :NO

043 キャンディーとN人の子供イージー / Children and Candies (ABC Edit)

puts (1..gets.to_i).inject(:+)

044 高橋君とホテルイージー / Tak and Hotels (ABC Edit)

n, k, x, y = readlines.map(&:to_i)
puts x * n - (x - y) * [n - k, 0].max

045 台形 / Trapezoids

a, b, h = readlines.map(&:to_i)
puts (a + b) * h / 2

046 AtCoDeerくんとペンキ / AtCoDeer and Paint Cans

puts gets.chomp.split.uniq.size

047 キャンディーと2人の子供 / Fighting over Candies

a, b, c = gets.split.map(&:to_i).sort
puts a + b == c ? :Yes : :No

048 AtCoder *** Contest

puts gets.split.map { |s| s[0] }.join

049 居合を終え、青い絵を覆う / UOIAUAI

puts "aiueo".include?(gets.chomp) ? :vowel : :consonant

050 Addition and Subtraction Easy

puts eval(gets)

所感

途中から短さ重視になってきている感も否めない、気をつけねば
51~はまた今度

5
2
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
5
2