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

paizaの森練習問題コンテスト(2024年3月開催)の過去問です。

【回文】コード

reader.on('close', () => {
   const s = lines[0].split('');
   let palindrome = true;
   const l = s.length;
   for (let i = 0; i < l; i++) {
      if (s[i] !== s[l - 1 - i]) {
         palindrome = false;
         break;
      }
   }
   console.log(palindrome ? 'Yes' : 'No');
});
hogeちゃんの画像

右から読んでも左から読んでも同じなら ‘Yes’。

【区間の三分割】コード

reader.on('close', () => {
   const [l, r] = lines[0].split(' ').map(Number);
   const n = (r - l) / 3;
   console.log(l + n, r - n);
});
hogeちゃんの画像

(右端 – 左端) ÷ 3 で全体の長さの 1/3  を計算。

【割り切れる数の個数】コード

reader.on('close', () => {
   const [a, b] = lines[0].split(' ').map(Number);
   let ans = 0;
   for (let i = a; i <= b; i++) {
      if (i % 2 === 0 || i % 3 === 0) {
         ans++;
      }
   }
   console.log(ans);
});
hogeちゃんの画像

2で割った余りが 0 または 3で割った余りが 0 なら ans を加算。

【パイプを切る】コード

reader.on('close', () => {
   const [n, k] = lines[0].split(' ').map(Number);
   const A = lines[1].split(' ').map(Number);
   let num = 0;
   for (let i = 0; i < n; i++) {
      num += Math.floor(A[i] / k);
   }
   console.log(num);
});
hogeちゃんの画像
各パイプを k で割って 端数を切り捨て。

【好みのピザ】コード

reader.on('close', () => {
   const [n, m] = lines[0].split(' ').map(Number);
   const M = new Array(n).fill(0);
   const A = lines[1].split(' ').map(Number);
   for (let i = 0; i < m; i++) {
      M[A[i] - 1] = 1;
   }
   ans = M.reduce((a, c) => a + c);
   console.log(ans);
});
hogeちゃんの画像

注文したピザの種類数。

【家計の収支】コード

reader.on('close', () => {
   const [n, k] = lines.shift().split(' ').map(Number); //n ヶ月前は k 円
   const A = lines.shift().split(' ').map(Number); //収入
   const B = lines.shift().split(' ').map(Number); //支出
   const sum_A = A.reduce((a, c) => a + c);
   const sum_B = B.reduce((a, c) => a + c);
   console.log(k + sum_A - sum_B);
});
hogeちゃんの画像

sum_A は収入の合計・ sum_B は支出の合計。

【野球世界大会 1 次ラウンドの順位】コード

reader.on('close', () => {
   const M = new Map();
   for (let i = 0; i < 5; i++) {
      M.set(lines.shift(), 0);
   }
   for (let i = 0; i < 10; i++) {
      const [s1, win] = lines.shift().split(' ');
      const [a, b] = s1.split('-');
      switch (win) {
         case '1':
            M.set(a, M.get(a) + 1);
            break;
         case '0':
            M.set(b, M.get(b) + 1);
            break;
      }
   }
   const A = [];
   M.forEach((value, key) => {
      A.push([key, value]);
   });
   A.sort();
   A.sort((s, b) => b[1] - s[1]);
   console.log(A[0][0]);
   console.log(A[1][0]);
});
hogeちゃんの画像

連想配列は Map() を使いました。

コメント