본문 바로가기
Coding Test

[ 빈도수 세기 패턴 / 오답 ] validAnagram

by ウリ김영은 2023. 10. 29.

문제

Given two strings, write a function to determine if the second string is an anagram of the first. An anagram is a word, phrase, or name formed by rearranging the letters of another, such as cinema, formed from iceman. (no spaces, all lowercase words)

validAnagram('','') //true
validAnagram('aaz','zza') //false
validAnagram('anagram','nagaram') //true
validAnagram('awesome','awesom') //false

정답 풀이

function validAnagram(first, second) {
  if (first.length !== second.length) {
    return false;
  }

  const lookup = {};

  for (let i = 0; i < first.length; i++) {
    let letter = first[i];
    // if letter exists, increment, otherwise set to 1
    lookup[letter] ? lookup[letter] += 1 : lookup[letter] = 1;
  }

  for (let i = 0; i < second.length; i++) {
    let letter = second[i];
    // can't find letter or letter is zero then it's not an anagram
    if (!lookup[letter]) {
      return false;
    } else {
      lookup[letter] -= 1;
    }
  }

  return true;
}

내 풀이 - 오답

  1. 저러면 키값이 같은 애들은 계속 1로 덮어씌어진다. 값이 더해지는 게 아니라.
function validAnagram(string1, string2){
  if(string1.length !== string2.length){return false}

  let object1 = {}
  let object2 = {}
  for(let i = 0;i<string1.length; i++){
    object1 = {...object1,string1[i]:1}
  } 
  for(let i = 0;i<string2.length; i++){
    object2 = {...object2,string2[i]:1}
  } 
return object1 === object2 ? true : false
}
  1. function validAnagram(string1, string2){
    if(string1.length !== string2.length){return false}
    
    let object1, object2 = {}
    for(let i = 0 ; i < string1.length; i++){
       let letter1 = string1[i]
       object1[letter1] ? object1[letter1] += 1 : object1[letter1] = 1;
    }
    for(let i = 0 ; i < string2.length; i++){
       let letter2 = string2[i]
       object2[letter2] ? object2[letter2] += 1 : object2[letter2] = 1;
    }
    object1 === object2 ? true : false;
    }

아하 객체나 배열은 생긴 게 똑같아도 같은 게 아니라고 했다. 참조값이 서로 다르다고.

[1,2,3] !== [1,2,3] //true

'Coding Test' 카테고리의 다른 글

[ 빈도수 세기 패턴 / 정답 ] sameFrequency  (0) 2023.10.29