[BOJ]15729-密室脱出


✔Problem-[15729]密室脱出-DP



🔰 Level

  • solved.ac標準シルバー1
  • ❔ How

  • 動的計画の問題.
  • 私がボタンを押した回数を出力すればいいです.
  • の前から、答えと私の答えを比較し、押します.
  • まず正解ボタンと同じ長さの0塗りの新しい配列を作成し、正解と比較すると、ボタンを押すたびに右の2つのボタンを更新し、1つずつ押せばよい.
  • ✅ Source Code

    const inputs = require('fs')
        .readFileSync(
            process.platform === 'linux' ? 'dev/stdin' : 'input.txt'
        )
        .toString()
        .trim()
        .split('\n');
    
    const n = +inputs[0];
    const arr = inputs[1].split(' ').map(Number);
    let pwd = new Array(n).fill(0);
    let cnt = 0;
    
    for (let i = 0; i < n; i++) {
        if (arr[i] !== pwd[i]) { //답이랑 다른 상태면
            cnt += 1;
            pwd[i] = pwd[i] === 0 ? 1 : 0; //0인건 1로, 1인건 0으로 눌러주고
            if (i < n - 1) {
                pwd[i + 1] = pwd[i + 1] === 0 ? 1 : 0; //옆의 것도 바꿔줘야함.
                if (i < n) { pwd[i + 2] = pwd[i + 2] === 0 ? 1 : 0 }; //옆의 것도 바꿔줘야함.
            }
        }
    }
    
    console.log(cnt);