文字列《Cランク UP メニュー》

Cランクレベルアップメニュー【整数と文字列・部分文字列・数字の文字列操作・数字の文字列操作・文字列】

【STEP: 1】コード

reader.on('close', () => {
   const N = lines[0];
   for (let i = 1; i <= N; i++) {
      const A = lines[i];
      console.log(A.length);  // A の文字数を出力
   }
});
hogeちゃんの画像

文字列の長さを lengthプロパティ で取得。

【STEP: 2】コード

reader.on('close', () => {
   const A = lines[0];  // 文字
   const S = lines[1];  // 文字列
   console.log(S.includes(A) ? 'YES' : 'NO');  // SA が含まれれば "YES" さもなくば "NO");
});
hogeちゃんの画像

s.includes(a) を実行すると sa が含まれていれば true・含まれていなければ false を返してくれます。

【STEP: 3】コード

reader.on('close', () => {
   const S = lines[0].split('').map(Number);
   const A = (S[0] + S[3]).toString();   // 数値 + 数値を 数字(文字列)に変換
   const B = (S[1] + S[2]).toString();   //      〃
   console.log(A + B);  // 数字(文字列)を連結して出力
});
hogeちゃんの画像

演算結果を toString()で 文字列に変換して + 演算子で連結して出力しています。

【STEP: 4】コード

reader.on('close', () => {
   const N = lines[0];
   console.log(N.padStart(3, '0'));  //  0 埋めで 3 桁になるようにして出力
})
hogeちゃんの画像
padStart(3, '0') で 3桁揃えの 0埋め の文字列ができました。

【STEP: 5】コード

reader.on('close', () => {
   const S = lines[0];
   const A = S.split(':').map(Number);  // (':') で区切って 数値化
   console.log(A[0]);
   console.log(A[1]);
});
hogeちゃんの画像

S.split(':').map(Number) で S を ″:″ で区切った配列を生成して 各値 を 数値に変換。文字列の ″01″ を数値に変換すると 1 になるみたいね。

【STEP: 6】コード

reader.on('close', () => {
   const S = lines[0].split(':').map(Number);  // S[0]= 時間 S[1] = 分
   S[1] += 30;  // 30 分後なので S[1](分)を +30
   if (S[1] >= 60) {  // 60分 以上になる場合は…
      S[1] -= 60;  // 分を -60 して…
      S[0]++;  // 時間を 繰上げ
   }
   const T = S.map(String);  // S を 文字列に変換
   console.log(T[0].padStart(2, '0') + ':' + T[1].padStart(2, '0'));  // 2桁, 0埋めで出力
});
hogeちゃんの画像

足し算を行うために map(Number) で数値に変換し 0埋めにするために map(String) で 再度 文字列に変換。

【FINAL】コード

reader.on('close', () => {
   const N = Number(lines[0]);  // 工事期間(週)
   for (let i = 1; i <= N; i++) {
      let [t, h, m]= lines[i].split(' ');  // 工事が始まる時刻・継続時間
      let [hs, ms]= t.split(':').map(Number);  // 時(hs)・分(ms)に始まる
      [h, m] = [h, m].map(Number);  // h 時間 m 分続く
      hs += h;  // 開始時 + 継続時
      ms += m;  // 開始分 + 継続分
      if (ms >= 60) {  // 分 が 60 以上なら…
         ms -= 60;  // 分 - 60
         hs++;  // 時間を繰り上げ
      }
      if (hs >= 24) {  // 時間 が 24 以上なら…
         hs -= 24;  // 時間 - 24
      }
      [hs, ms] = [hs, ms].map(String);  // 文字列に変換
      console.log(hs.padStart(2, '0') + ':' + ms.padStart(2, '0'));  // (2桁, '0'埋め)で出力
   }
}); 

文字の区切り方・計算などが複雑になってますけど【STEP: 6】で使用した組み込み関数 を 使えば OK。

コメント