【Ruby基礎】AtCoder Beginner Contest 016 A – 12月6日

■はじめに

Rubyの基礎的な問題をたくさん解くことで基本的な考え方やメソッドの使い方を定着させたい。
基本的にはAtCoderというプログラミングコンテスト(競技プログラミング)の過去問を使う。(AtCoderは難易度が分かれており、難易度の低いA問題かB問題を解いていく)

■問題

●出典

AtCoder Beginner Contest 016のA問題
https://atcoder.jp/contests/abc016/tasks/abc016_1

●問題文

12月6日は、月を日で割って割り切れる日です。日付が与えられるので月が日で割り切れるかを判定してください。

●入力

入力は以下の形式で標準入力から与えられる。

M D
  • 月を表す整数 M と日を表す整数 D が空白区切りで与えられる。

●出力

月が日で割り切れるなら YES 、割り切れないなら NO を出力せよ。出力の末尾には改行をつけること。

■回答

●愚直に書く

まず標準入力を取る

m, d = gets.split.map(&:to_i)
p m
p d

pでmとdがそれぞれ出せることを確認。

「割り切れるなら」は「割って余りがゼロなら」に言い換えられるので、これでいけるはず…

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

通った!

●リファクタリング/別アプローチ

うーん思いつかない。

●他の方の回答例

上位の方々の凄い回答はさておき、基本的には上の解法で良さそう。==0と書くところを<1と書いてる方が割といた。今回のケースで言えば結果は同じになるので、1文字でも少なくするためにそうしているのだろうか…!

●出てきたメソッド等

公式リファレンスを見る訓練。

  • 特に無し

■振り返りなど

今回はサッと書けて良かった。