日別アーカイブ: 2022年8月29日

paizaCランクレベルアップ問題と解答(4) 整数と文字列 Ruby

※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。

詳しくはコチラ

なるべくわかりやすい解説を付けました

問題1 整数と文字列 (paizaランク D 相当)

整数 n と、 n 個の整数 a_1, …, a_n が改行区切りで与えられるので、各 a_i (1 ≤ i ≤ n) の文字列としての長さを改行区切りで出力してください。

入力される値
入力は以下のフォーマットで与えられます。

n
a_1
...
a_n

1 行目には整数 n が与えられ、 2 行目から (n + 1) 行目には n 個の整数 a_1, …, a_n が改行区切りで与えられます。 

入力値最終行の末尾に改行が1つ入ります。

文字列は標準入力から渡されます。

期待する出力
各 a_i (1 ≤ i ≤ n) の文字列としての長さを改行区切りで出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≤ n ≤ 50
・各 a_i (1 ≤ i ≤ n) について、 0 ≤ a_i ≤ 10000
入力例1
2
10
100
出力例1
2
3
入力例2
3
1234
0
99
出力例2
4
1
2

解答 文字列として受け取らないとエラーになるので注意

#1行目の入力値(数値)を変数に代入する
n = gets.to_i
#n回繰り返し改行を打ち消してから受け取った入力値(文字列)の長さを出力する
n.times { puts gets.chomp.size }

または length と size は同じ(エイリアス)

#1行目の入力値(数値)を変数に代入する
n = gets.to_i
#n回繰り返し改行を打ち消してから受け取った入力値(文字列)の長さを出力する
n.times { puts gets.chomp.length }

問題2 部分文字列 (paizaランク D 相当)

文字 a と文字列 S が与えられるので、 S に a が含まれているかどうか判定し、含まれている場合には “YES” を、そうでない場合には “NO” を出力してください。

入力される値
入力は以下のフォーマットで与えられます。

a
S

1 行目に文字 a が、 2 行目に文字列 S が与えられます。入力値最終行の末尾に改行が1つ入ります。

文字列は標準入力から渡されます。

期待する出力
S に a が含まれている場合には “YES” を、そうでない場合には “NO” を出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。

・a, S はそれぞれ大文字または小文字のアルファベットからなる文字、文字列
・S の長さは 1 以上 10 以下
入力例1
Z
Kirishima
出力例1
NO
入力例2
a
paiza
出力例2
YES

解答

#1行目の入力値(数値)を変数に代入する
x = gets.chomp

#2行目の入力値を受け取り変数に代入
strings = gets.chomp

#変数xの文字列が存在したときYESと出力
  if strings.include?(x)
     puts "YES"

#変数xの文字列が存在しないときNOと出力する
  else puts "NO"
end

別解   3項演算子を使うと短く書くことができる

#1行目の入力値(文字列)を変数に代入する
x = gets.chomp

#2行目の入力値を受け取り変数xの文字列が存在したときYESと出力
#2行目の入力値を受け取り変数xの文字列が存在しないときNOと出力する
puts gets.chomp.include?(x) ? "YES" : "NO"