paizaの森練習問題コンテスト(2022/7/28開催)の過去問
【3 割打者】コード
reader.on('close', () => {
const [n, m] = lines[0].split(' ');
console.log(m / n >= 0.3 ? 'Yes' : 'No');
});
m ÷ n が 0.3 以上 なら ″Yes″ そうでなければ ″No″。
【テレワーク可能か】コード
reader.on('close', () => {
const [a, b] = lines[0].split(' ');
console.log(a > 30 || b === 'rainy' ? 'Yes' : 'No');
});
a が 30 以上か または b が ″rainy″ なら ″Yes″ そうでなければ ″No″。
【文字列の反転】コード
reader.on('close', () => {
const s = lines[0].split('');
console.log(s.reverse().join('')); // 配列 s を反転させてから 結合
});
s.reverse().join('')
で 配列 s を反転させてから 結合。
【CD】コード
reader.on('close', () => {
const max_s = 74 * 60; // 分を秒に換算
const n = lines[0];
let second = 0;
for (let i = 1; i <= n; i++) {
const [m, s] = lines[i].split(' ').map(Number);
second += m * 60 + s; // 秒 = 分 ✕ 60 + 秒
}
console.log(second <= max_s ? 'Yes' : 'No');
});
分を秒に換算 するために 入力値を 60倍して 条件分岐。
【サイクルヒット】コード
reader.on('close', () => {
const M = new Set();
for (let i = 0; i < 5; i++) {
const m = Number(lines[i]); // 打席の結果
if (m) { // m が true(0以外) なら…
M.add(m); // M に m を保存
}
}
console.log(M.size === 4 ? 'Yes' : 'No'); // 要素数が 4 なら "Yes" さもなくば "No"
});
入力値を セット M に保存。セットに 同じ値は保存できないので 要素数が 4 であれば サイクルヒットが成立していることになります。( ◜ω◝ )
【条件を満たす最小の整数】コード
reader.on('close', () => {
const [x, y, z] = lines[0].split(' ').map(Number);
let i = x; // i を x で初期化
while (i % y !== z) { // i mod y が z と一致しない間…
i++; // i を 加算
}
console.log(i);
});
while文 で i を x で初期化して i % y !== z
であれば i++。
コメント