paizaの森練習問題コンテスト(2024年5月開催)の過去問
です。
Task
【出力の練習】コード
console.log('marine');
‘marine’ を出力。
【red があるか調べてみよう】コード
reader.on('close', () => {
const S = lines[0].split(' ');
console.log((S.includes('red')) ? 'Yes' : 'No');
});
S に ‘red’ が含まれていれば ‘Yes’。
Task
【階乗】コード
reader.on('close', () => {
const N = Number(lines[0]);
let ans = 1;
for (let i = 1; i <= N; i++) {
ans *= i;
}
console.log(ans);
});
1 ~ N まで ループして掛け算。
【単語のカウント】コード
reader.on('close', () => {
const S = lines[0].split(' ');
const W = new Map();
for (const s of S) {
if (W.has(s)) {
W.set(s, W.get(s) + 1);
} else {
W.set(s, 1);
}
}
W.forEach((value, key) => {
console.log(key, value);
});
});
W の (key = 単語, value = 単語)が含まれている数。
【倍数の存在】コード
reader.on('close', () => {
const [a, b, c] = lines[0].split(' ').map(Number);
let ans = false;
for (let i = b; i <= c; i++) {
if (i % a === 0) {
ans = true;
break;
}
}
console.log(ans ? 'Yes' : 'No');
});
b から c までループして a で割り切れれば true。
【全員が不正答】コード
reader.on('close', () => {
const [n, m] = lines[0].split(' ').map(Number);
const test = [];
for (let i = 1; i <= m; i++) {
test.push(lines[i].split(' ').map(Number));
}
const test2 = new Array(n).fill().map(e => []);
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
test2[i][j] = test[j][i];
}
}
let point0 = false;
for (const t of test2) {
const point = t.reduce((a, c) => a + c);
if (!point) {
point0 = true;
break;
}
}
console.log(point0 ? 'Yes' : 'No');
});
配列の行と列を入れ替えて 行の値を足し合わせた数が 0 なら true。
コメント