[伯俊]15729密室脱出-javascript
📌 質問する
https://www.acmicpc.net/problem/15729
📌 に答える
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
let n = Number(input[0]);
let goal = input[1].split(" ").map(Number);
let arr = new Array(n).fill(0);
let cnt = new Array(n).fill(0);
let ans = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== goal[i] && cnt[i] % 2 === 0) {
for (let j = 1; j <= 2; j++) {
cnt[i + j]++;
}
ans++;
}
if (arr[i] === goal[i] && cnt[i] % 2 === 1) {
for (let j = 1; j <= 2; j++) {
cnt[i + j]++;
}
ans++;
}
}
console.log(ans);
✔アルゴリズム:グリディボタンを押すたびに並べ替えが更新されないのがポイントです.
✔ボタンを押すと、右側の2つのボタンも押されます.
✔0に初期化したシナリオをメモのシナリオと比較し、その他の場合はボタンを押します.
結果は別の状況です.ボタンを数回押した後、現在の値は初期値arr[i]に等しい.したがって,ボタンを押すと,右側の2つのcnt配列が1増加する.
結果は同じ状況です.ボタンは奇数押下状態であるため、現在値は初期値arr[i]ではない.だからボタンを押さない.
結果は同じ状況です.ボタンを数回押した後、現在の値は初期値arr[i]に等しい.だからボタンを押さない.
結果は別の状況です.ボタンを数回押した後、現在の値は初期値arr[i]ではないため、ターゲット[i]とは異なる.したがって,ボタンを押すと,右側の2つのcnt配列が1増加する.
Reference
この問題について([伯俊]15729密室脱出-javascript), 我々は、より多くの情報をここで見つけました https://velog.io/@ywc8851/백준-15729-방탈출-javascriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol