[백준] - 20310 타노스 (node.js)

밀루·2025년 2월 1일
0

BOJ

목록 보기
66/82

문제링크

코드

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을 카운트해서 재배열 하는 식으로 했는데 재배열을 하면 안되고 자리 유지를 해야하는 문제였다.

profile
이밀루의 도전

0개의 댓글