条件分岐メニュー【けた数の測定・足したり引いたり・同値判定・終了判定・池の周回・崖に落ちるか判定・タイルの敷き詰め・積の最小化】
【STEP: 1】コード
reader.on('close', () => {
let N = lines[0];
let ans = 0; // 出力値を 0 で初期化
while (N >= 1) { // N が 1 以上の間
N /= 10; // N を 10 で割りながら
ans++; // ans + 1
}
console.log(ans);
});
while文で N が 1 以上の間 10 で割りながら ans の値を 1追加しています。
【STEP: 2】コード
reader.on('close', () => {
const [N, A, B] = lines[0].split(' ').map(Number);
const [add_A, sub_A, B2] = [N + A, N - A, B].map(Math.abs);
console.log(add_A === B2 || sub_A === B2 ? 'YES' : 'NO');
});
Math.abs()
で 絶対値を求めています。N + A または N – A の絶対値のどちらかが B の絶対値と等しければ″YES″ 。
【STEP: 3】コード
reader.on('close', () => {
const N = Number(lines[0]);
const A = lines[1].split(' ');
const B = lines[2].split(' ');
let ans = 0;
for (let i = 0; i < N; i++) {
if (A[i] === B[i]) {
ans++;
}
}
console.log(ans);
});
N 回ループして A[i] === B[i] なら ans を加算。
【STEP: 4】コード
reader.on('close', () => {
const N = Number(lines[0]);
const A = lines[1].split(' ').map(Number);
let ans = 0;
for (let i = 0; i < N; i++) {
if (A[i] % 2) { // A[i] ÷ 2 の余りが 1 (true) なら…
break; // ループを止める
}
ans += A[i]; // ans に A[i] を加算
}
console.log(ans);
});
ans に A[i] の値を加算していきますが if文 で条件分岐し A[i] が 奇数 であれば ループを抜ける処理を記述しています。
【STEP: 5】コード
reader.on('close', () => {
const [N, K] = lines[0].split(' ').map(Number);
let n = N;
let ans = 0; // 出力値(操作回数)を 0 で初期化
while (n < K) {
n *= 2;
ans++;
}
console.log(ans);
});
while文 で n が K 以下の間 処理を繰り返しています。処理を行う毎に ans を加算することで 操作回数を求めました。
【STEP: 6】コード
reader.on('close', () => {
const [N, K, T] = lines[0].split(' ').map(Number);
const M = K * T; // 歩いた距離
console.log(M % N ? 'NO' : 'YES'); // M % N が 0 なら'YES'
});
M は歩いた距離…。M % N で スタート地点 との距離を割り出すことができました。スタート地点 との距離が 0 (false)なら″YES″を出力。
【STEP: 7】コード
reader.on('close', () => {
const [N, K, T] = lines[0].split(' ').map(Number);
console.log(N * K <= T ? 'YES' : 'NO');
});
N * K が T 以下なら″YES″。
【STEP: 8】コード
reader.on('close', () => {
const [H, W] = lines[0].split(' ').map(Number);
console.log(!((H % 2 || W % 2) || !(H * W)) ? 'YES' : 'NO');
});
箱のサイズ % タイルのサイズが 0 且つ 箱のサイズが0でなければ″YES″。
【FINAL】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
if (A > 0) { // A が 正の数なら…
console.log(A * A); // 最小値は A ✕ A
} else if (B > 0) { // A が 0 以下で B が 正の数なら…
console.log(A * B); // 最小値は A ✕ B
} else if (B <= 0) { // A も B も 0 以下なら…
console.log(B * B); // 最小値は B ✕ B
}
});
A ・B が正の数 or 負の数 or 0によって答えを振り分けています。
コメント