質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1257閲覧

Ruby countメソッドについて

退会済みユーザー

退会済みユーザー

総合スコア0

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/08/26 06:24

編集2020/08/26 06:35

こんにちは。
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

readlinesで得た結果には、各行ごとに改行文字も含まれています。

そして、String#countは、「含まれる文字のどれか」で判定するので、検索する対象にもされる対象にも改行文字が含まれる結果、必ず1文字は存在してしまいます。

投稿2020/08/26 06:41

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/26 07:03

回答頂きありがとうございます。 コードを見直しchompメソッドを加えたらできました。 この度はありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問