LoginSignup
0
0

More than 3 years have passed since last update.

【At Corder】【初心者】ABC081A - Placing Marbles をRuby で解いてみた

Last updated at Posted at 2021-03-31

はじめに

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita

こちらの記事を参考に初心者がAt corderに挑戦します。
目的としては、就職活動でのコーディングテスト対策です。
毎日1問を目標としてコツコツやってきます:thinking:

わからないことは調べる精神です。ちょっとでもわからないなぁ、と思ったことは調べて解説と参考文献を載せますので、同じ内容でわからない人がいれば参考にししてください:baby:

問題 ABC081A - Placing Marbles

1,2,3の番号がついた3つのマスがあり、それぞれ0か1が書かれている。
マスiにはs_iが書かれている。1が書かれたマスにビー玉を置く。ビー玉が置かれるマスがいくつあるか求めよ。

制約

s1,s2,s3s1,s2,s3は1あるいは0

入力 出力

s1s2s3

出力
答えを出力せよ

入力例

101

出力例

2

回答

array = []
array = gets.chomp.split("").map(&:to_i)
p array.count(1)

解説

まずarrayを宣言して、その後入力を受ける。
今回は一文字ずつ代入するのでsplit("")とする。
mapメソッドを使って、配列として代入する

配列.map{|変数|変数に対する処理}

一つ一つの要素に対して処理をしてから代入してくれる。今回は変数ではないので&にしておくのかな?

参考文献より一文で書ける様子

p gets.chomp.split("").map(&:to_i).count(1)

かっこいい、、

感想

配列の場合、どのように入力すればいいのかわからなかった。今回は配列を宣言してから=gets.chomp~としてみた。

配列に代入するとき、必ずしも事前に用意する必要はないみたい。

array = gets.chomp.split("").map(&:to_i)

宣言しなくても、いきなり配列として代入することができる。

array = array.push(1)

これはNG。nilに対してメソッドは使えない。

array = []
array = array.push(1)

これだとOK。
配列に直接メソッドを使う場合は前もって定義しておく必要がある。

参考文献

[Atcoder]ABC081A - Placing Marbles[Ruby]

【Ruby】標準入力と出力のまとめ - Qiita

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