paizaの森練習問題コンテスト(2023年10月開催)の過去問
です。
【先頭が一致】コード
reader.on('close', () => {
const [a, b] = [lines[0], lines[1]];
console.log(b.startsWith(a) ? 'Yes' : 'No');
console.log(a.startsWith(b) ? 'Yes' : 'No');
});
startsWith(s) で 文字列の先頭が s で始まるかどうかの真偽値を取得できました 。
【合計と平均】コード
reader.on('close', () => {
const n = Number(lines[0]);
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += Number(lines[i]);
}
console.log(sum);
console.log(Math.floor(sum / n));
});
平均値は sum を n で割って Math.floor()で小数点以下を切り捨てました。
【二等辺三角形】コード
reader.on('close', () => {
const [a, b, c] = [lines[0], lines[1], lines[2]];
console.log(a === b || b === c || c === a ? 'Yes' : 'No');
});
二辺が一致すれば ‘Yes’ さもなくば ‘No’。
【飽き性】コード
reader.on('close', () => {
const [a, b] = lines[0].split(' ').map(Number);
const d = (a + b) / 2;
console.log(Math.min(a, b), d - Math.min(a, b));
});
異なる種類を食べられる日は Math.min(a, b)。
同じ種類の食べ物を食べる日はd – Math.min(a, b)
同じ種類の食べ物を食べる日はd – Math.min(a, b)
【占い – その 2】コード
reader.on('close', () => {
const n = Number(lines[0]);
const S = lines[1].split(' ').map(Number);
const sum = S.reduce((a, c) => a + c);
console.log(sum % 7 === 0 ? 'Yes' : 'No');
});
sum を 7 で割った あまりが 0 なら ‘Yes’ さもなくば ‘No’。
【連結判定】コード
reader.on('close', () => {
const adjacency_List = (a, b) => {
List[a].push(b);
List[b].push(a);
};
const List = []; // 隣接リスト
const [N, M] = lines[0].split(' ').map(Number);
for (let i = 0; i < N; i++) {
List.push([]);
}
for (let i = 1; i <= M; i++) {
const [A, B] = lines[i].split(' ').map(e => e - 1);
adjacency_List(A, B);
}
const dfs = (just_now, linked) => {
linked[just_now] = true;
for (const next of List[just_now]) {
if (linked[next]) {
continue;
}
dfs(next, linked);
}
return linked;
};
const points = new Array(N).fill(false);
console.log(dfs(0, points).includes(false) ? 'No' : 'Yes');
});
List は無効グラフの隣接リスト。
コメント