๐Ÿ”’Algorithm

๋ฐฑ์ค€[JS] > 1244๋ฒˆ ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ

devWarrior 2025. 3. 6. 23:46

๋ฌธ์ œ๋งํฌ

https://www.acmicpc.net/problem/1244

๋ฌธ์ œํ’€์ด

์Šค์œ„์น˜๋ฅผ ์–ด๋ ˆ์ดํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•ด์„œ ์ด๋ฅผ ๋‹ค๋ฃจ์—ˆ๋‹ค. switchArr[n] ์€ n๋ฒˆ์งธ ์Šค์œ—์น˜์˜ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ค€๋‹ค ( 1 ๋˜๋Š” 0 ) ์ด ์ดํ›„์—๋Š” ๊ตฌํ˜„๋Šฅ๋ ฅ์— ๋‹ฌ๋ ค์žˆ๋‹ค. ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let switchCount = Number(input[0]);

let switchArr = input[1].split(" ").map((n) => Number(n));
switchArr.unshift(undefined);
for (let i = 3; i < input.length; ++i) {
    let [gender, n] = input[i].split(" ").map((v) => Number(v));

    if (gender === 1) {
        // ๋‚จ์ž
        let multipliedNum = n;
        while (multipliedNum <= switchCount) {
            switchArr[multipliedNum] = switchArr[multipliedNum] === 1 ? 0 : 1;
            multipliedNum += n;
        }
    } else {
        // ์—ฌ์ž
        switchArr[n] = switchArr[n] === 0 ? 1 : 0;
        let left = n - 1,
            right = n + 1;

        while (left >= 1 && right <= switchCount && switchArr[left] === switchArr[right]) {
            switchArr[left] = switchArr[left] === 0 ? 1 : 0;
            switchArr[right] = switchArr[right] === 0 ? 1 : 0;
            left -= 1;
            right += 1;
        }
    }
}

switchArr.shift();
let answer = "";
let cnt = 0;
for (let i = 0; i < switchArr.length; ++i) {
    if (cnt !== 20) {
        answer += ` ${switchArr[i]}`;
        ++cnt;
    } else {
        answer += `\n${switchArr[i]}`;
        cnt = 1;
    }
}
console.log(answer.trim());