
😎풀이
anagram을 판별할 헬퍼 함수 정의
words 순회
2-1. 현재 단어와 이전 단어가 anagram인지 판별
2-2. 참인 경우, 현재 단어를 words에서 제거
2-3. 거짓인 경우, 탐색 재개
words에 남은 단어 반환
function removeAnagrams(words: string[]): string[] {
let idx = 1
while(idx < words.length) {
const cur = words[idx]
const prev = words[idx - 1]
if(!isAnagram(cur, prev)) {
idx++
continue
}
words.splice(idx, 1)
}
return words
};
function isAnagram(word1: string, word2: string) {
const frequent1 = new Map()
const frequent2 = new Map()
for(const word of word1) {
frequent1.set(word, (frequent1.get(word) ?? 0) + 1)
}
for(const word of word2) {
frequent2.set(word, (frequent2.get(word) ?? 0) + 1)
}
for(const [key, value] of frequent1) {
if(!frequent2.has(key)) return false
if(frequent2.get(key) !== value) return false
}
for(const [key, value] of frequent2) {
if(!frequent1.has(key)) return false
if(frequent1.get(key) !== value) return false
}
return true
}