forループ《Cランク UP メニュー》

Cランクレベルアップメニュー【3の倍数・フラグ管理・インデックス・多重ループ・forループ 】

【STEP: 1】コード

reader.on('close', () => {
   const n = lines[0];
   const A = lines[1].split(' ');
   let ans = 0;
   for (let i = 0; i < n; i++) {
      if (A[i] % 3 === 0) {  // 3 で割り切れれば…
         ans++;  // ans を加算
      }
   }
   console.log(ans);
});
hogeちゃんの画像

3 の倍数を見つけるために a[i] ÷ 3 の余りが 0 になるかどうかで識別。

【STEP: 2】コード

reader.on('close', () => {
   const n = lines[0];
   let flag = false;  // flag は "7" が 含まれるかどうかの真偽値(false で初期化)
   for (let i = 1; i <= n; i++) {
      const a = lines[i];
      if (a === '7') {  // a が "7" なら… 
         flag = true;  // flag を true にして…
         break;  // 処理を止める
      }
   }
   console.log(flag ? 'YES' : 'NO');  // flag が true なら "YES" false なら "NO" を出力
});
hogeちゃんの画像

flag の初期値は false 。ループしながら if文で条件分岐し 入力が ″7″ であれば flag = true;を実行してループをストップ。

【STEP: 3】コード

reader.on('close', () => {
   const n = Number(lines[0]);
   const k = Number(lines[n + 1]);  // k は 基準となる金額
   const A = new Array(n);  // A の要素は n 人の財産
   for (let i = 1; i <= n; i++) {
      A.push(Number(lines[i]));  // A に入力値を保存
   }
   console.log(A.indexOf(k) + 1);  // A に含まれる k の 添字 + 1 を出力
});
hogeちゃんの画像

a.indexOf(k) で 配列 a に含まれる k の index が取得できますが 添字は 0 始まりなので +1 しています。

【STEP: 4】コード

reader.on('close', () => {
   const m = Number(lines[0]);
   const n = Number(lines[m + 1]);
   for (let i = 1; i <= m; i++) {
      const c = lines[i];  // c = 文字
      for (let j = m + 2; j < m + 2 + n; j++) {
         const S = lines[j];  // S = 文字列
         let flag = false;  // Sc が含まれるかどうかの真偽値
         if (S.includes(c)) {  // Sc が含まれれば…
            flag = true;  // flag は true
         }
         console.log(flag ? 'YES' : 'NO');  // flag が true なら "YES" false なら "NO"
      }
   }
});
hogeちゃんの画像
二重ループで m * n 回 出力 。 S.includes(c)Sc  が 含まれているかどうかの真偽値を取得して if文 の条件にしています。

【FINAL】コード

reader.on('close', () => {
   const [N, M, K] = lines[0].split(' ').map(Number);
   for (let i = 1; i <= N; i++) {
      const A = lines[i].split(' ').map(Number);  // 紙に書いた M 個の数字
      let count_k = 0;  // k の数(最初は 0)
      for (let j = 0; j < M; j++) {
         if (A[j] === K) {  // M 個の数字を個々に調べて K なら…
            count_k++;  // count_k を加算
         }
      }
      console.log(count_k);
   }
});
hogeちゃんの画像

二重ループで N 回 出力 。

コメント