※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました
問題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"