const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let arr = fs.readFileSync(filePath).toString().trim().split("").map(Number);
let cnt0 = (cnt1 = 0);
for (const s of arr) {
s === 0 ? cnt0++ : cnt1++;
}
const cnt0h = cnt0 / 2;
const cnt1h = cnt1 / 2;
for (let i = arr.length - 1; i > 0; i--) {
// 0은 뒤부터 지우기
if (arr[i] === 0) {
arr[i] = "";
cnt0--;
}
if (cnt0 === cnt0h) break;
}
for (let i = 0; i < arr.length; i++) {
// 1은 앞부터 지우기
if (arr[i] === 1) {
arr[i] = "";
cnt1--;
}
if (cnt1 === cnt1h) break;
}
console.log(arr.join(""));
처음에 0과 1을 카운트해서 재배열 하는 식으로 했는데 재배열을 하면 안되고 자리 유지를 해야하는 문제였다.