
😎풀이
s
를 순회
1-1. 현재 요소가 이전 요소와 다르다면, 이어진 길이로 최대 길이를 갱신하고 초기화
1-2. 현재 요소가 이전 요소와 같다면, 길이 증가
- 이어진 상태로 문자열이 종료되었을 가정하에 최대 길이 갱신
- 1의 substring이 0의 substring 최대 길이보다 길게 나열되었는지 판단
function checkZeroOnes(s: string): boolean {
let curOneLen = s[0] === '1' ? 1 : 0
let curZeroLen = s[0] === '0' ? 1 : 0
let maxOneLen = curOneLen
let maxZeroLen = curZeroLen
for(let i = 1; i < s.length; i++) {
const prev = s[i - 1]
const cur = s[i]
if(prev !== cur) {
maxOneLen = Math.max(maxOneLen, curOneLen)
maxZeroLen = Math.max(maxZeroLen, curZeroLen)
curOneLen = 0
curZeroLen = 0
if(cur === '1') curOneLen = 1
else curZeroLen = 1
continue
}
if(cur === '1') curOneLen++
else curZeroLen++
}
maxOneLen = Math.max(maxOneLen, curOneLen)
maxZeroLen = Math.max(maxZeroLen, curZeroLen)
return maxOneLen > maxZeroLen
};