どうもアットコーダーをJavascriptで解いてる野蛮人です。
300の問題、Travelingを解いてたのですが、どうしても解けなくて以下の記事を参考にしたところ、
https://qiita.com/ytanto/items/caf7bf0ba287da81b20f
まさかのWA!!
前の距離から次の目的地までが移動可能かがロジックに入っていないため、失敗するようでした。
私と同じ難民が出たらと思い、正解コードを晒しておきます。
Javascript
function Main(i) {
let a = i.split(`\n`);
a.pop();
let total = [];
for (let i = 0; i < Number(a[0]); i++) {
if (i == 0) {
let array = a[1].split(" ");
let t = Number(array[0]);
let x = Number(array[1]);
let y = Number(array[2]);
if (t >= x + y && t % 2 == (x + y) % 2) {
total.push(true);
} else {
total.push(false);
}
} else {
let array1 = a[i].split(" ");
let array2 = a[i + 1].split(" ");
let t1 = Number(array1[0]);
let x1 = Number(array1[1]);
let y1 = Number(array1[2]);
let t2 = Number(array2[0]);
let x2 = Number(array2[1]);
let y2 = Number(array2[2]);
let nextDistance = x1 + y1 - (x2 + y2);
let nextDistance2 = x1 + x2 - (y1 + y2);
if (
Math.abs(t2 - t1) % 2 == Math.abs(nextDistance2) % 2
//奇偶数が一致しないとピッタリ止まれない
&&
t2 - t1 >= Math.abs(nextDistance)
//次の地点へ移動可能な時間か判定する
) {
total.push(true);
} else {
total.push(false);
}
}
}
let res = total.every((n) => {
return n;
});
if (res) {
console.log("Yes");
} else {
console.log("No");
}
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));