Study/Algorithm
[BEAKJOON / node.js] 1439 뒤집기
Poylib
2022. 6. 8. 12:49
https://www.acmicpc.net/problem/1439
//test.txt
11001100110011000001
sol1
const input = require('fs').readFileSync('test.txt').toString().trim();
function solution(input) {
if(input.includes(0) && input.includes(1)) {
let toOne = input.split(0).filter(el => el!== '').length;
let toZero = input.split(1).filter(el => el!== '').length;
return toOne < toZero ? toOne : toZero;
} else return 0
};
console.log(solution(input));
입력받은 문자열이 '0000' 이거나 '111'처럼 바꿀 필요가 없는 경우엔 바로 0을 출력하게 하고, 0과 1이 모두 있는 경우만 조건에 맞는 값을 출력한다.
let toOne = input.split(0).filter(el => el!== '');
let toZero = input.split(1).filter(el => el!== '');
console.log(toOne);
console.log(toZero);
// [ '11', '11', '11', '11', '1' ]
// [ '00', '00', '00', '00000' ]
split()으로 나누면 구분자는 [''] 빈 요소로 남게 되기 때문에 filter() 메서드를 사용해 빈 요소를 제거한 길이를 비교해야 한다. 0으로 나눈 경우, 1로 나눈 경우 중에서 배열의 길이가 작은 쪽을 출력하면 된다.