第34回【Javascript】何個ある? 1、何個ある? 2、【配列の検索】何個ある? Boss

JavaScriptby LeoSaki

現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。

学習サービストッププログラミング学習サイト【paizaラーニング】のメインページ。paiza独自のシステムにより、面倒な環境構築が不要、Webブラウザがあれば5秒で学習が開始できます。わかりやすい1本3分の動画と豊富な演習問題で初心者〜中級者のプログラミング学習を支援します。paiza.jp

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

JavaScript をゼロから勉強してみよう、のコーナー 34 回目です。

AWS が提供しているサービスを理解することで、例えば、今まで cron で回していた作業を EventBridge と Lambda でやる、みたいなことを考えることが出来るようになります。サーバーのステートレス化とマイクロサービス化は、モダナイゼーションを行ううえで最も重要なファクターだと思っているので、最新の知識を追いかけていくべきです。

それでは、今日も頑張ってみようと思います。

何個ある? 1 (paizaランク D 相当)

プログラミング練習問題「何個ある? 1」問題を解いてスキルアップ!みんなも一緒に解いてみよう!paiza.jp

以下のような配列があります。

1 2 2 1 2 1 2 1 1 1

この中に含まれる 1 の個数を出力してください。


入力される値

入力は与えられません。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

配列に含まれる 1 の個数を出力してください。

6

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

入力は与えられません。

ここまでの学習の中で、for と if を利用する、reduce を利用する、filter を利用するの 3 パターンを思いつくことが出来る。

JavaScript(fot と if)
const L = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1];
let cnt = 0;
for (let i = 0; i < L.length; i++) {
    if (L[i] == 1) cnt++;
}
console.log(cnt);
JavaScript(reduce)
const L = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1];
const cnt = L.reduce((i,ele) => {
    if (ele == 1) i++;
    return i;
},0);
console.log(cnt);
JavaScript(filter)
const L = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1];
const cnt = L.filter(i => i == 1);
console.log(cnt.length);
Python
L = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1]
ans = 0
for li in L:
    if li == 1:
       ans += 1
print(ans)

何個ある? 2 (paizaランク D 相当)

プログラミング練習問題「何個ある? 2」問題を解いてスキルアップ!みんなも一緒に解いてみよう!paiza.jp

整数 N が与えられます。
以下の配列に含まれる N の個数を出力してください。
また、N は以下の配列に 1 個以上含まれるものとします。

1 2 5 1 4 3 2 5 1 4

入力される値

N

整数 N が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

N が何個あるか出力してください。

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・N は与えられた配列に 1 個以上含まれる


入力例

1

出力例

3

さっきやったやつのちょっとだけ応用編。簡単。

JavaScript(fot と if)
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 = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4];
    let cnt = 0;
    for (let i = 0; i < L.length; i++) {
        if (L[i] == n) cnt++;
    }
    console.log(cnt);
});
JavaScript(reduce)
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 = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4];
    const cnt = L.reduce((i,ele) => {
        if (ele == n) i++;
        return i;
    },0);
    console.log(cnt);
});
JavaScript(filter)
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 = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4];
    const cnt = L.filter(i => i == n);
    console.log(cnt.length);
});
Python
N = int(input())
L = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4]
ans = 0
for li in L:
    if li == N:
       ans += 1
print(ans)

【配列の検索】何個ある? Boss (paizaランク D 相当)

プログラミング練習問題「【配列の検索】何個ある? Boss」問題を解いてスキルアップ!みんなも一緒に解いてみよう!paiza.jp

1 行目に整数 N, M が与えられます。
2 行目に M 個の整数 a_1, a_2, …, a_M が与えられます。
M 個の整数に N が何個あるか数え、出力してください。
また、N は M 個の整数の中に 1 個以上含まれるものとします。


入力される値

N M
a_1 a_2 ... a_M

1 行目に整数 N, M が与えられます。
2 行目に M 個の整数 a_1, a_2, …, a_M が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

M 個の整数に N が何個あるか数え、出力してください。

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・N, M は 1 以上 10 以下の整数
・a_i (1 ≦ i ≦ M) は 1 以上 10 以下の整数
・N は M 個の整数の中に 1 個以上含まれる


入力例

1 5
1 1 1 2 2

出力例

3

お馴染み、最後は、全部が標準入力から与えられるパターンです。

JavaScript(fot と if)
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] = lines[0].split(/\s/).map(Number);
    const L = lines[1].split(/\s/).map(Number);
    let cnt = 0;
    for (let i = 0; i < m; i++) {
        if (L[i] == n) cnt++;
    }
    console.log(cnt);
});
JavaScript(reduce)
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] = lines[0].split(/\s/).map(Number);
    const L = lines[1].split(/\s/).map(Number);
    const cnt = L.reduce((i,ele) => {
        if (ele == n) i++;
        return i;
    },0);
    console.log(cnt);
});
JavaScript(filter)
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] = lines[0].split(/\s/).map(Number);
    const L = lines[1].split(/\s/).map(Number);
    const cnt = L.filter(i => i == n);
    console.log(cnt.length);
});
Python
N,M = map(int,input().split())
L = list(map(int,input().split()))
ans = 0
for li in L:
    if li == N:
       ans += 1
print(ans)

最後に

いちいち、解答の都度、手打ちしています。身に付けるために一番重要なのは反復練習で身体で覚えることが近道だと思っている古い人間なので。小学生のころ、漢字書き取り 1000 回とかやらされませんでした? 誇張でもなんでもなく、漢字の小テストで間違えると、1000 回やらされるのがデフォでした。

そのおかげだと信じてやまない。LeoSaki(旦那)は、漢字に詳しい。そして、文字を書くのがとても早い。ゆっくりゆっくり書いていては、1000 回なんて終わりませんから。

引き続き、よろしくお願いいたします!

Python の第34回はこちら

第34回【Python】何個ある? 1、何個ある? 2、【配列の検索】何個ある? Boss記事

LeoSaki

旦那の方。 猫と嫁とのキャンプをこよなく愛する。 AWS 6 冠達成者。AWS 好き。 ITパスポート、基本情報技術者、応用情報技術者も取得しています。