😎풀이

  1. spattern을 각각 공백과 글자별로 분리
  2. 패턴과 단어 수 자체가 일치하지 않는다면 false 반환
  3. 패턴과 단어를 각각 key 값으로 갖는 map 생성
  4. 패턴 순회
    4-1. 각 map에 서로를 key로 갖는 값이 없을 경우 정의
    4-2. 각 map에 값들이 일치하지 않을 경우 false 반환
  5. 모든 순회 시 문제가 없었다면 true 반환
function wordPattern(pattern: string, s: string): boolean {
    const words = s.split(" ")
    const patterns = pattern.split("")
    if(words.length !== patterns.length) return false
    const patternToWordMap = new Map<string, string>()
    const wordToPatternMap = new Map<string, string>()
    for(let i = 0; i < patterns.length; i++) {
        const curWord = words[i]
        const curPattern = patterns[i]
        if(!patternToWordMap.has(curPattern) && !wordToPatternMap.has(curWord)) {
            patternToWordMap.set(curPattern, curWord)
            wordToPatternMap.set(curWord, curPattern)
            continue
        }
        if(patternToWordMap.get(curPattern) !== curWord) return false
        if(wordToPatternMap.get(curWord) !== curPattern) return false
    }
    return true
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글