第50回【JavaScrip】指定の要素のカウント、全ての要素の和
現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 50 回目です。
ここしばらく、Python を使う機会が多くなっています。並行して JavaScrip の勉強を続けていると、ときどきごっちゃになって参ってしまいます。コロンのところがセミコロンになっていたり、カッコがいらないのにカッコを書いていたり。
それでは、今日も頑張ってみようと思います。
指定の要素のカウント (paizaランク D 相当)
配列 A の要素数 N と整数 K, 配列 A の各要素 A_1, A_2, …, A_N が与えられるので、配列 A に K がいくつ含まれるか数えてください。
入力される値
N K
A_1
...
A_N
・1 行目では、配列 A の要素数 N と整数 K が半角スペース区切りで与えられます。
・続く N 行では、配列 A の要素が先頭から順に与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
配列 A に含まれる K の数を 1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 100
・0 ≦ A_i, K ≦ 100 (1 ≦ i ≦ N)
入力例
1 2
1
出力例
0
filter を使う方法も思いつくけれど、とりあえずは最初に思い浮かんだ正攻法で。
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,k] = lines[0].split(/\s/).map(Number);
const L = [];
let cnt = 0;
for (let i = 1; i <= n; i++) {
L.push(Number(lines[i]));
}
for (let i = 0; i < n; i++) {
if (L[i] == k) cnt++;
}
console.log(cnt);
});
JavaScript(こっちの方が JS らしい?)
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,k] = lines[0].split(/\s/).map(Number);
const L = [];
for (let i = 1; i <= n; i++) {
L.push(Number(lines[i]));
}
let cnt = L.filter(n => n === k).length;
console.log(cnt);
});
Python
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
print(A.count(K))
全ての要素の和 (paizaランク D 相当)
配列 A の要素数 N と配列 A の各要素 A_1, A_2, …, A_N が整数として与えられるので、配列 A の全ての要素の和を求めてください。
入力される値
N
A_1
...
A_N
・1 行目では、配列 A の要素数 N が与えられます。
・続く N 行では、配列 A の要素が先頭から順に与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
配列 A の全ての要素の和を 1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 100
・0 ≦ A_i ≦ 100 (1 ≦ i ≦ N)
入力例
5
1
2
3
4
5
出力例
15
配列 A の要素の和、らしいので、1 行ずつ足し算するのはダメなんだろうなぁ。
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 = Number(lines[0]);
const L = [];
for (let i = 1; i <= n; i++) {
L.push(Number(lines[i]));
}
const sum = L.reduce((a,b) => a + b, 0);
console.log(sum);
});
Python
N = int(input())
A = [int(input()) for _ in range(N)]
print(sum(A))
最後に
もっと、「らしい」書き方がありそうだけれど、今の実力ではここまで。分かりやすくは書けている、気がしている。ネットでいろいろと調べていても、流し読みで読むことが出来るようにはなってきました。
Web のフロントで使われることが多いと思うので、あまり計算とか、数値関連に特化した関数が用意されていない、という認識で良いのかしら。それでも、かなり自由度はあると思う。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません