Anagram Check
Anagram Check - Explanation
Problem Summary
Write a function that checks if two strings are anagrams of each other.
Go to Problem →Detailed Explanation
이 문제는 **애너그램 판별 알고리즘**을 학습합니다. 문자열 정렬을 통한 비교 방법을 익힙니다. **애너그램이란?** 같은 문자들을 재배열하여 만든 다른 단어입니다: - "listen"과 "silent" → 같은 문자 l, i, s, t, e, n - "hello"와 "world" → 다른 문자 구성 **정렬 기반 접근법** 두 문자열의 문자를 정렬하면 애너그램은 같은 결과가 됩니다: - "listen" → 정렬 → "eilnst" - "silent" → 정렬 → "eilnst" - 같음 → 애너그램! **normalize 함수의 역할** 1. toLowerCase(): 대소문자 통일 2. split(''): 문자 배열로 변환 3. sort(): 알파벳 순 정렬 4. join(''): 다시 문자열로 **"listen"과 "silent" 비교** - normalize("listen") → "eilnst" - normalize("silent") → "eilnst" - "eilnst" === "eilnst" → true **빈도수 기반 접근법 (대안)** 각 문자의 출현 횟수를 세어 비교하는 방법도 있습니다. O(n) 시간복잡도로 더 효율적입니다. **공백 처리** 현재 구현은 공백도 문자로 취급합니다. 공백을 무시하려면 replace(/\s/g, '')를 추가해야 합니다.
Solution Code
function isAnagram(str1, str2) {
const normalize = s => s.toLowerCase().split('').sort().join('');
return normalize(str1) === normalize(str2);
}Key Concepts from This Problem
Common Mistakes
Hints
Complexity Analysis
Time Complexity
O(n log n)
Efficient sorting algorithm level
Space Complexity
O(n)
Uses memory proportional to input size