특별한 문자들이 있다. 한자리인 0 과 두자리인 10, 11 이다. 그리고 맨 뒤의 원소가 0 인, 0 과 1 로 구성된 배열이 주어진다. 이 배열을 구성하는 마지막 문자가 한자리 문자인지 판별하는 문제.
두자리를 차지하는 문자는 무조건 1로 시작한다는 점을 보면 쉽다. 앞에서부터 bits[i] 를 확인해서 0 이면 한 칸 전진, 1 이면 두 칸 전진하면 된다. 이후 인덱스로 사용한 i 가 배열의 마지막 인덱스와 같은지만 확인하면 되는 문제. 두칸씩 점프할 일이 많을수록 배열을 덜 돌아서 좋다.
function isOneBitCharacter(bits: number[]): boolean {
const lastIndex = bits.length - 1;
let i = 0;
while(i < lastIndex) {
if (bits[i] === 0) {
i += 1
} else {
i += 2
}
}
return i === lastIndex;
};
