第98回【JavaScript】forループ

現在取り組んでいるのは、paiza ラーニング問題集「Cランクレベルアップメニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 98 回目です。
ちゃんとお休みが欲しくて転職をしたはずが、今、いつも仕事をしている気がします。元々ブラック体質なんだろうと、自覚はあります。しかし、いつまでもそんな働き方がいいのかどうか、そろそろ本気で考える必要があると考えています。
それでは、今日も頑張ってみようと思います。
forループ (paizaランク C 相当)
パイザ君の所属する会社では忘年会の余興で次のようなゲームを行います。まず、正整数 M が発表され、参加者は手元の紙に M 個、好きな数字を書きます。このとき、紙に書く数のそれぞれは 1 以上 M 以下であり、同じ数字を何度書いても構いません。その後、 1 以上 M 以下の数 K が発表され、各参加者は自分の紙に数字 K を書いた数だけポイントをもらい、ポイントの高い順に景品が配られます。
忘年会の参加者の人数 N と、数 M , K が与えられ、各参加者が書いた紙が与えられるので、それぞれの参加者の得点を計算して出力してください。
入力される値
N M K
a_{1,1} ... a_{1,M}
...
a_{N,1} ... a_{N,M}
1 行目には上で説明した数 N, M, K が半角スペース区切りで与えられ、 2 行目から (N + 1) 行目までには各参加者が紙に書いた数字が M 個ずつ半角スペース区切りで、 N 回与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
入力された通りの順番で、各参加者の得点をN回、改行区切りで出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≤ N , M ≤ 50
・1 ≤ K , a_{i,j} ≤ M(1 ≤ i ≤ N , 1 ≤ j ≤ M)
入力例
3 2 1
2 2
1 2
1 1
出力例
0
1
2
この余興は、一か八か全部同じ数字を書いておく、というのが必勝法な気がする。
JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
const [n,m,k] = lines[0].split(/\s/).map(Number);
for (let i = 1; i <= n; i++) {
const A = lines[i].split(/\s/).map(Number);
let cnt = 0;
for (let a of A) {
if (a == k) cnt++;
}
console.log(cnt);
}
});
Python
N,M,K = map(int,input().split())
for _ in range(N):
A = [int(x) for x in input().split()]
print(A.count(K))
最後に
Python にあるような count はないようなので、地道に数える必要があるっぽい。でも、何パターンかやり方はありそうなので、もう少し学習する必要があるかなぁと思いました。実際に Python で利用したことがあるメソッドは、JavaScript でも利用する可能性は高いと思うので。
ここしばらく Python の利用頻度が高く、よくカッコやセミコロンを忘れる・・・。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません