[백준] 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));
댓글남기기