📜

Anagram Check

Anagram Check - Explanation

보통 문자열 O(n log n) O(n)

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

solution.js
function isAnagram(str1, str2) {
  const normalize = s => s.toLowerCase().split('').sort().join('');
  return normalize(str1) === normalize(str2);
}

Key Concepts from This Problem

1. 애너그램 개념
2. 문자열 정렬
3. normalize 패턴
4. 문자열 비교

Common Mistakes

대소문자를 통일하지 않으면 "Listen"과 "Silent"이 다르게 판별됩니다
공백을 포함한 비교가 필요한지 확인해야 합니다
sort()는 유니코드 순서로 정렬하므로 특수문자 주의

Hints

Hint 1: 문자들을 정렬한 후 비교하세요.

Complexity Analysis

Time Complexity

O(n log n)

Efficient sorting algorithm level

Space Complexity

O(n)

Uses memory proportional to input size

Related Tags

#문자열 #sort #알고리즘