처음엔 정말 정규 표현식으로 사용해서 매칭된 길이와 비교하려했으나 실패하였음
function isMatch(s: string, p: string): boolean {
const regP = new RegExp(p)
const matchedStr = s.match(regP)
if(!matchedStr) return false
return matchedStr[0].length === s.length
};
그 이유는 테스트 케이스를 확인해보니, 정규 표현식과 비슷한 구조일 뿐 실제 정규 표현식이 p에 할당되는것이 아니라 오류가 발생
function isMatch(s: string, p: string): boolean {
// 기본 케이스
if (p === '') return s === '';
// 첫 문자 매치 확인
const firstMatch = s.length > 0 && (p[0] === s[0] || p[0] === '.');
// '*' 패턴 처리
if (p.length >= 2 && p[1] === '*') {
return isMatch(s, p.slice(2)) || (firstMatch && isMatch(s.slice(1), p));
} else {
return firstMatch && isMatch(s.slice(1), p.slice(1));
}
}
하여 재귀적으로 패턴이 올바른지 검색하는 풀이를 사용하였음