😎풀이

  1. ransomNote의 문자 빈도 저장
  2. magazine의 문자 빈도 저장
  3. 문자 빈도를 비교하며, 맞지 않을 경우 false 반환
  4. 모든 문자가 포함될 수 있다면 true 반환
function canConstruct(ransomNote: string, magazine: string): boolean {
    const ransomMap = new Map<string, number>()
    for(const char of ransomNote) ransomMap.set(char, (ransomMap.get(char) ?? 0) + 1)
    const magazineMap = new Map<string, number>()
    for(const char of magazine) magazineMap.set(char, (magazineMap.get(char) ?? 0) + 1)
    for(const [key, value] of ransomMap) {
        if(!magazineMap.has(key)) return false
        if(magazineMap.get(key) < value) return false
    }
    return true
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글