📌 LeetCode [242]: Valid Anagram
🔗 문제 링크
문제 설명 📄
주어진 두 문자열
s
와t
가 주어질 때,t
가s
의 애너그램(anagram)인지 확인하는 문제입니다.
애너그램이란, 단어 또는 문장을 구성하는 문자의 순서만 다르고 동일한 문자들로 구성된 다른 단어를 의미합니다.
문제 접근 방식 📋
문자열 s
와 t
가 같은 문자들을 같은 빈도로 포함하고 있는지 확인하면 됩니다. 이를 위해 문자 빈도수를 세는 방법을 생각했습니다. Python의 collections.Counter
를 사용하면 각 문자의 빈도수를 쉽게 구할 수 있기 때문에, 두 문자열의 빈도수를 비교하는 방식으로 접근했습니다.
아이디어 설명 💡
collections.Counter
를 사용하여 문자열s
와t
의 문자 빈도수를 계산합니다.- 두
Counter
객체를 비교하여 동일하면 애너그램, 그렇지 않으면 아님을 반환합니다.
Solution 💻
from collections import Counter
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
counter = Counter(s)
target = Counter(t)
return counter == target
시간 복잡도 분석 ⏲️
- 시간 복잡도:
O(n)
n
은 문자열s
와t
의 길이입니다.Counter
를 사용하여 문자열의 각 문자를 세는 데O(n)
의 시간이 소요되며, 두Counter
객체를 비교하는 데O(1)
이 소요됩니다.
공간 복잡도 분석 🗄️
- 공간 복잡도:
O(n)
Counter
객체에 문자열의 모든 문자를 저장하므로 추가적인 공간이 필요합니다.
'알고리즘' 카테고리의 다른 글
LeetCode [1]: Two Sum (0) | 2024.11.19 |
---|---|
LeetCode [338]: Counting Bits (0) | 2024.11.18 |
LeetCode [347]: Top K Frequent Elements (0) | 2024.11.18 |
LeetCode [191]: Number of 1 Bits (0) | 2024.11.17 |
LeetCode [1701]: Average Wating Time (0) | 2024.11.17 |