-
[JS 알고리즘&자료구조] 빈도수 세기 : 애너그램 도전 과제JavaScript/Basic 2023. 11. 7. 00:33
오늘은 빈도수 세기 패턴을 활용한 애너그램 도전 과제를 풀어볼 것이다.
두 개의 문자열이 주어졌을 때, 두 번째 문자열이 첫 번째 문자열의 애너그램인지 확인하는 함수를 작성하세요. 애너그램이란, 'cinema'가 'iceman'의 글자를 재배열해서 만들어진 것처럼, 다른 단어나 문구, 이름의 글자를 재배열해서 만들어진 단어나 문구, 이름을 말합니다.
저번 시간에 학습한 빈도수 세기 패턴을 활용한 나의 풀이이다.// TODO : 두번째 문자열이 첫번째 문자열의 애너그램인지 확인하는 함수 작성 const validAnagram = (str1, str2) => { // str1과 str2 길이가 서로 맞지 않으면 이미 조건이 성립하지 않기 때문에 false를 return if(str1.length !== str2.length) return false; // str2에 있는 문자들이 str1에 있는 문자들의 애너그램인지 확인하여 맞으면 true 아니면 false를 반환 // str1과 str2를 담을 object 변수들을 선언해준다. let charCounter1 = {}; let charCounter2 = {}; // 먼저 str1을 object화 시켜준다. for(let char of str1) { charCounter1[char] = (charCounter1[char] || 0) + 1 } // 그 다음 str2를 object화 시켜준다. for(let char of str2) { charCounter2[char] = (charCounter2[char] || 0) + 1 } // charCount1과 charCount2간 비교해줌 for(let key in charCounter1) { if(!(key in charCounter2)) { return false; } if(charCounter2[key] !== charCounter1[key]) { return false; } } // 비교했을 때 false를 return하지 않았다면 true를 return return true; }
해당 패턴을 익히기 위해서 더 많은 연습이 필요할 듯 하다..!'JavaScript > Basic' 카테고리의 다른 글
[JS 알고리즘&자료구조] 다중 포인터 패턴 : 또 다른 문제 풀이 (1) 2023.11.13 [JS 알고리즘&자료구조] 다중 포인터 패턴 (0) 2023.11.13 [JS 알고리즘&자료구조] 빈도수 세기 패턴 (0) 2023.11.03 [JS 알고리즘&자료구조] 문제 해결 패턴 소개 (0) 2023.11.02 [JS 알고리즘&자료구조] 되돌아보기와 리팩터 (0) 2023.11.02