// Run by Node.js
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let inputStr = "";
rl.on("line", function (line) {
inputStr += line;
}).on("close", function () {
solution();
process.exit();
});
const solution = () => {
let numArr = inputStr.split("").map((el) => parseInt(el));
let calNum = 0;
calNum += numArr[0];
for (let i = 1; i < numArr.length; i++) {
if (calNum === 0 || calNum === 1) calNum += numArr[i];
else calNum = calNum * numArr[i];
}
console.log(calNum);
};
오름차순으로 정리한다.
i를 numArr[i]로 바꾸면서 수를 센다.
2 3 1 2 2
내 풀이:
1. i번째와 i-1번째가 다를 경우 카운트한다.
2. 일정한 규칙을 발견했다. 카운트가 홀수면 카운트/2를 올림하고, 짝수면 카운트/2 한 값이 답이다.
정답 풀이:
1. 모두 0으로 바꾸는 경우, 모두 1로 바꾸는 경우 둘다 해본다.
2. 둘 중에서 적게 카운팅 된 값이 답이다.
...
// Run by Node.js
const { count } = require("console");
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let inputStr = "";
rl.on("line", function (line) {
inputStr += line;
}).on("close", function () {
solution();
process.exit();
});
const solution = () => {
let arr = inputStr.split("");
let count = 0;
let answer = 0;
for (let i = 1; i < arr.length; i++) {
if (arr[i] != arr[i - 1]) {
count++;
}
}
if (count == 0) answer = 0;
else if (count % 2 == 0) {
answer = count / 2;
} else answer = Math.ceil(count / 2);
console.log(answer);
};