마지막 문자가 1비트 문자인지 여부 반환, 여기서 1비트 문자란
0
만을 의미함
binary
: 가능한 decode bit 목록0
이라면 문제에서 원하는 조건을 충족하므로 true
반환isDecodable
: binary
를 순회하며 해당 데이터를 통해 bit
를 decode 할 수 있는지 여부curBinary
로 현재 bit
를 decode할 수 있다면 재귀적으로 탐색, 아니라면 다음 탐색 시작binary
목록에서 decode할 수 없다는 것이므로 false
반환bits
를 backTracking
하여 문제 조건에 충족한다면 true
, 아니라면 false
반환function isOneBitCharacter(bits: number[]): boolean {
const binary = [[0], [1, 0], [1, 1]]
function backTracking(remainBits: number[]) {
if(remainBits.length === 1 && remainBits[0] === 0) return true
let isDecodable = true
for(const curBinary of binary) {
for(let i = 0; i < curBinary.length; i++) {
if(curBinary[i] === remainBits[i]) continue
isDecodable = false
break
}
if(!isDecodable) {
isDecodable = true
continue
}
if(backTracking(remainBits.slice(curBinary.length))) return true
}
return false
}
return backTracking(bits)
};