paizaの森練習問題コンテスト(2023年10月開催)の過去問
です。
【文字列の一致】コード
reader.on('close', () => {
const a = lines[0];
const b = lines[1];
console.log(a === b ? 'Yes' : 'No');
});
a === b なら ‘Yes’。
【部分文字列】コード
reader.on('close', () => {
const a = lines[0];
const b = lines[1];
console.log(a.includes(b) ? 'Yes' : 'No');
});
a に b が含まれていれば ‘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');
}
});
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));
});
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);
});
l_1 〜 r_1 と l_2 〜 r_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');
});
y は苦手なプレゼントの index。p は1番高価なプレゼントのindex。
コメント