[leetcode, JS] 2423. Remove Letter To Equalize Frequency

mxxn·2024년 5월 28일
0

leetcode

목록 보기
163/198

문제

문제 링크 : Remove Letter To Equalize Frequency

풀이

/**
 * @param {string} word
 * @return {boolean}
 */
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
};
  1. word의 카운팅을 할 객체를 만들고
  2. 해당 객체로 -1 카운팅을 하고 배열로 만들었을 때, 중복된 카운팅이 한개만 있을 경우에 true, 아니면 false return
  • Runtime 60 ms, Memory 50.86 MB

다른 풀이

/**
 * @param {string} word
 * @return {boolean}
 */
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;
   
};
  1. 위와 비슷한 풀이지만 더효율적인 코트
  • Runtime 57 ms, Memory 50.30 MB
profile
내일도 글쓰기

0개의 댓글