#【AtCoder 精選過去問を解いてみた Part 1】
何番煎じかわかりませんが、@drkenさんのAtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~を解いてみました。
詳細な解説は、@drkenさんの記事を参照ください。
LGTM6000超えの優良記事です。
Rubyを用いて、過去問を解きました。
解答に誤りなどありましたらご指摘いただけますと幸いです。
練習 : A - Welcome to AtCoder
問題文
整数a,b,cと文字列sが与えられます。 a+b+cの計算結果と文字列sを並べて表示してください。
制約
・1 ≤ a,b,c ≤ 1,000
・1 ≤ |s| ≤ 100
# 整数の入力
a = gets.to_i
# スペース区切りの整数の入力
b, c = gets.chomp.split.map(&:to_i)
# 文字列の入力
s = gets.chomp
# 出力
puts "#{a+b+c} #{s}"
第1問 : ABC 086 A - Product (100点)
問題文
二つの正整数a,bを見つけました。aとbの積が偶数か奇数か判定してください。
制約
・1 ≤ a,b ≤ 10000
・a,b:整数
# スペース区切りの整数の入力(1行に複数の数値が入力された時の鉄板)
a, b = gets.chomp.split.map(&:to_i)
# 偶数奇数を判定する組み込みメソッド
puts (a * b).odd? ? 'Odd' : 'Even'
第2問 : ABC 081 A - Placing Marbles (100点)
問題文
1,2,3の番号がついた3つのマスからなるマス目を持っています。
各マスには0か1が書かれており、マスiにはsiが書かれています。
1が書かれたマスにビー玉を置きます。
ビー玉が置かれるマスがいくつあるか求めてください。
制約
・s1,s2,s3:1あるいは0
# N行のデータの入力
n = gets.chomp.to_s
# 「1」をカウントする
puts n.count("1")
第3問 : ABC 081 B - Shift Only (200点)
問題文
黒板にN個の正の整数A1,...,ANが書かれています。
黒板に書かれている整数がすべて偶数であるとき、次の操作を行うことができます。
・黒板に書かれている整数すべてを、2で割ったものに置き換える。
最大で何回操作を行うことができるかを求めてください。
制約
・1 ≤ N ≤ 200
・1 ≤ Ai ≤ 10の9乗
# N行のデータの入力
n = gets.chomp.to_s
# スペース区切りの整数の入力
a = gets.chomp.split.map(&:to_i)
cnt = 0
# 全てが偶数であるか判定する:all?
while a.all?(&:even?) do
a = a.map { |t| t / 2 }
# インクリメント
cnt += 1
end
# 「2で割れた回数」を出力
puts cnt
##おわりに。
この記事の問は、まだ理解がしやすかったです。
以降の問もやっていきます。
Part 2【第4問〜第6問】
Part 3【第7問〜第9問】
##参考
AtCoder に登録したら解くべき精選過去問 10 問を Ruby で解いてみた
AtCoder に登録したら解くべき精選過去問 10 問を Ruby・Crystal の両方で動くコードで解いてみた
ありがとうございました。