문제
문제 링크 : Remove Letter To Equalize Frequency
풀이
var equalFrequency = function(word) {
const wordMap = {}
for(let el of word) {
wordMap[el] = wordMap[el] ? wordMap[el] + 1 : 1
}
for(let el of word) {
const arr = Object.entries(wordMap).map(e => e[0] === el ? e[1] -= 1 : e[1])
if([... new Set(arr)].filter(e => e>0 ).length === 1) return true
}
return false
};
- word의 카운팅을 할 객체를 만들고
- 해당 객체로 -1 카운팅을 하고 배열로 만들었을 때, 중복된 카운팅이 한개만 있을 경우에 true, 아니면 false return
- Runtime 60 ms, Memory 50.86 MB
다른 풀이
var equalFrequency = function(word, cnt={}) {
for (let w of word) {cnt[w] = (cnt[w] || 0) + 1;}
for (let k in cnt) {
const newCnt = Object.assign({}, cnt);
if (--newCnt[k] === 0) delete newCnt[k];
if (new Set([...Object.values(newCnt)]).size === 1) return true;}
return false;
};
- 위와 비슷한 풀이지만 더효율적인 코트
- Runtime 57 ms, Memory 50.30 MB