こんにちは。
paizaのCランクレベルアップ問題についてわからない部分があります。
特定の文字を数えるためにcountメソッドを使ったのですが、普通に数値を使うと数えられますが変数を代入して使うと数がおかしくなってしまいます。
以下問題と自分で作ったコードとおかしくなったケースの入力内容と出力結果になります。
よろしくお願いします。
引用テキスト
m 個の文字 c_1, ..., c_m と、 n 個の文字列 S_1, ..., S_n が与えられます。各 c_i (1 ≤ i ≤ m) について、各 S_j (1 ≤ j ≤ n) に c_i が出現するかをそれぞれ調べ、出現する場合は "YES" を、そうでない場合には "NO" を、そのつど出力してください。
入力は以下のフォーマットで与えられます。
m
c_1
...
c_m
n
S_1
...
S_n
1 行目に正整数 m が、 2 行目から (m + 1) 行目では文字 c_1, ...,c_m が、 (m + 2) 行目に正整数 n が、 (m + 3) 行目から ( m + n + 2) 行目では文字列 S_1, ..., S_n が、それぞれ改行区切りで与えられます(入力は全部で (m + n + 2) 行)。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力
c_1 が S_1 に出現するかどうか、 c_1 が S_2 に出現するかどうか、 ... 、 c_1 が S_n に出現するかどうか、 c_2 が S_1 に出現するかどうか、 c_2 が S_2 に出現するかどうか、 ... 、 c_2 が S_n に出現するかどうか、 ... 、 c_m が S_1 に出現するかどうか、 c_m が S_2 に出現するかどうか、 ... 、 c_m が S_n に出現するかどうか、という順番で m * n 回出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≤ m, n ≤ 50
・各 c_i, S_j (1 ≤ i ≤ m, 1 ≤ j ≤ n) はそれぞれアルファベット大文字あるいは小文字からなる文字、文字列
・各 S_j (1 ≤ j ≤ n) の長さは 1 以上 10 以下
入力例1
1
a
2
paiza
kyoko
出力例1
YES
NO
入力例2
2
c
d
2
cat
dog
出力例2
YES
NO
NO
YES
Ruby
1line=readlines 2 3m=line[0].to_i 4 5c=line[1..m] 6 7n=line[m+1].to_i 8 9s=line[n+1..n+1+n] 10 11s1=0 12c1=0 13 14while c1<m 15 answer=s[s1].count(c[c1]) 16 if answer>=1 17 puts "YES" 18 s1+=1 19 else 20 puts "NO" 21 s1+=1 22 end 23 24 if n==s1 25 c1+=1 26 s1=0 27 end 28 29end
入力内容
2
c
d
2
cat
dog
出力内容
YES
YES
YES
YES
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/26 07:03