
😎풀이
*를 기준으로 패턴 문자 분리
s 2중 순회
2-1. 현재 범위 산출
2-2. 시작 패턴 혹은 종료 패턴이 발견되지 않으면 false 반환
2-3. 두 패턴이 같은 문자를 가르킨다면 false 반환
2-4. 두 패턴에 중복된 문자열이 있다면 false 반환
2-5. 모든 케이스에 걸리지 않은 경우, s는 p에 매칭되는 패턴이 있음
function hasMatch(s: string, p: string): boolean {
const [start, end] = p.split("*")
const sLen = s.length
for(let left = 0; left < sLen; left++) {
for(let right = left + 1; right <= sLen; right++) {
const curr = s.slice(left, right)
const startIdx = curr.indexOf(start)
const endIdx = curr.lastIndexOf(end)
if(start && startIdx === -1) continue
if(end && endIdx === -1) continue
if(start && end && startIdx === endIdx) continue
if(startIdx + start.length > endIdx) continue
return true
}
}
return false
};