paizaの森練習問題コンテスト過去問題5

paizaの森練習問題コンテスト(2022/7/28開催)の過去問

【3 割打者】コード

reader.on('close', () => {
   const [n, m] = lines[0].split(' ');
   console.log(m / n >= 0.3 ? 'Yes' : 'No');
});
hogeちゃんの画像

m ÷ n が 0.3 以上 なら ″Yes″ そうでなければ ″No″。

【テレワーク可能か】コード

reader.on('close', () => {
   const [a, b] = lines[0].split(' ');
   console.log(a > 30 || b === 'rainy' ? 'Yes' : 'No');
});
hogeちゃんの画像

a が 30 以上か または b が ″rainy″ なら ″Yes″ そうでなければ ″No″。

【文字列の反転】コード

reader.on('close', () => {
   const s = lines[0].split('');
   console.log(s.reverse().join(''));  // 配列 s を反転させてから 結合
});
hogeちゃんの画像

s.reverse().join('') で 配列 s を反転させてから 結合。

【CD】コード

reader.on('close', () => {
   const max_s = 74 * 60;  // 分を秒に換算
   const n = lines[0];
   let second = 0;
   for (let i = 1; i <= n; i++) {
      const [m, s] = lines[i].split(' ').map(Number);
      second += m * 60 + s;  // 秒 = 分 ✕ 60 + 秒
   }
   console.log(second <= max_s ? 'Yes' : 'No');
});
hogeちゃんの画像
分を秒に換算 するために 入力値を 60倍して 条件分岐。

【サイクルヒット】コード

reader.on('close', () => {
   const M = new Set();
   for (let i = 0; i < 5; i++) {
      const m = Number(lines[i]);  // 打席の結果
      if (m) {  // m が true(0以外) なら…
         M.add(m);  // Mm を保存
      }
   }
   console.log(M.size === 4 ? 'Yes' : 'No');  // 要素数が 4 なら "Yes" さもなくば "No"
});
hogeちゃんの画像

入力値を セット M に保存。セットに 同じ値は保存できないので 要素数が 4 であれば サイクルヒットが成立していることになります。( ◜ω◝ )

【条件を満たす最小の整数】コード

reader.on('close', () => {
   const [x, y, z] = lines[0].split(' ').map(Number);
   let i = x;  // ix で初期化
   while (i % y !== z) {  // i mod yz と一致しない間…
      i++;  // i を 加算
   }
   console.log(i);
});
hogeちゃんの画像

while文 で ix で初期化して i % y !== z であれば i++。

コメント