[백준] 1439. 뒤집기

최대 1 분 소요

문제 링크

[백준] 1439. 뒤집기


풀이 과정

두 번 뒤집으면 원래 숫자로 되돌아오기 때문에 최소 횟수가 될 수 없습니다. 따라서, 딱 한 번만 뒤집어 같은 숫자로 만들 수 있는 경우를 생각해봐야 합니다.


모두 같은 수로 만드는 데 두 가지의 경우가 있습니다.

  • 모두 0으로 만드는 경우.
  • 모두 1로 만드는 경우.


위 두 가지의 경우로 숫자들을 뒤집어 가며, 두 경우 중 더 적은 횟수를 출력하면 정답이 됩니다.


코드

const fs = require("fs");
const stdin = (process.platform === "linux" ? fs.readFileSync("/dev/stdin") : `0001100`).toString().trim().split("\n");
const input = (() => {
    let line = 0;
    return () => stdin[line++];
})();

const str = input().split("");
let met = false;
let zeroCnt = 0,
    oneCnt = 0;

for (let i = 0; i < str.length; i++) {
    if (str[i] === "1") met = true;
    else if (met) {
        met = false;
        zeroCnt++;
    }
}
if (met) zeroCnt++;

met = false;

for (let i = 0; i < str.length; i++) {
    if (str[i] === "0") met = true;
    else if (met) {
        met = false;
        oneCnt++;
    }
}
if (met) oneCnt++;

console.log(Math.min(zeroCnt, oneCnt));

카테고리:

업데이트:

댓글남기기