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 の文字数を出力
}
});
文字列の長さを lengthプロパティ で取得。
【STEP: 2】コード
reader.on('close', () => {
const A = lines[0]; // 文字
const S = lines[1]; // 文字列
console.log(S.includes(A) ? 'YES' : 'NO'); // S に A が含まれれば "YES" さもなくば "NO");
});
s.includes(a)
を実行すると s に a が含まれていれば 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); // 数字(文字列)を連結して出力
});
演算結果を toString()
で 文字列に変換して + 演算子で連結して出力しています。
【STEP: 4】コード
reader.on('close', () => {
const N = lines[0];
console.log(N.padStart(3, '0')); // 0 埋めで 3 桁になるようにして出力
})
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]);
});
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埋めで出力
});
足し算を行うために 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。
コメント