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

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

【文字列の一致】コード

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

a === b なら ‘Yes’。

【部分文字列】コード

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

ab が含まれていれば ‘Yes’。

【グラフの連結】コード

reader.on('close', () => {
   const n = Number(lines[0]);
   const list = new Array(3).fill().map(e => []);
   for (let i = 1; i <= n; i++) {
      const [a, b] = lines[i].split(' ').map(Number);
      list[a].push(b);
      list[b].push(a);
   }
   if (list[2].includes(0)) {
       console.log('Yes');
   } else if (list[1].includes(2) && list[1].includes(0)) {
       console.log('Yes');
   } else {
      console.log('No');
   }
});
hogeちゃんの画像

list は無効グラフの隣接リスト。

【拡張子】コード

reader.on('close', () => {
   const s = lines[0];
   let [jpg, png] = [1000, 1000];
   if (s.includes('.jpg')) {
      jpg = s.indexOf('.jpg');
   }
   if (s.includes('.png')) {
      png = s.indexOf('.png');
   }
   console.log(Math.min(jpg, png));
 });
hogeちゃんの画像
s.indexOf(‘.jpg’) と s.indexOf(‘.png’) を比較して小さい方を出力。

【日程調整】コード

reader.on('close', () => {
   const [l_1, r_1, l_2, r_2] = lines[0].split(' ').map(Number);
   const days = new Array(1001).fill(0);
   let ans = 0;
   for (let i = l_1; i <= r_1; i++) {
      days[i] = 1;
   }
   for (let i = l_2; i <= r_2; i++) {
      if (days[i]) {
         ans++;
      }
   }
   console.log(ans);
});
hogeちゃんの画像

l_1  〜 r_1l_2r_2  の 両方に含まれている日数を出力。

【プレゼントの好み】コード

reader.on('close', () => {
   const x = lines[1].split(' ').map(Number);
   const y = lines[2].split(' ').map(e => e - 1);
   const p = x.indexOf(Math.max(...x));
   console.log(y.includes(p) ? 'Yes' : 'No');
});
hogeちゃんの画像

y は苦手なプレゼントの index。p は1番高価なプレゼントのindex。

コメント