
😎풀이
s
와 pattern
을 각각 공백과 글자별로 분리
- 패턴과 단어 수 자체가 일치하지 않는다면
false
반환
- 패턴과 단어를 각각 key 값으로 갖는 map 생성
- 패턴 순회
4-1. 각 map에 서로를 key로 갖는 값이 없을 경우 정의
4-2. 각 map에 값들이 일치하지 않을 경우 false
반환
- 모든 순회 시 문제가 없었다면
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
};