From 91fa4b4a0c3db6bb7e415cf483f9f870bd81d822 Mon Sep 17 00:00:00 2001 From: nkey Date: Fri, 10 Jul 2026 10:59:55 +0900 Subject: [PATCH] =?UTF-8?q?easy/strings=20242=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- easy/strings/242.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 easy/strings/242.py diff --git a/easy/strings/242.py b/easy/strings/242.py new file mode 100644 index 0000000..83814fd --- /dev/null +++ b/easy/strings/242.py @@ -0,0 +1,31 @@ +# Valid Anagram + +from collections import Counter + +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + c = Counter(s) + for k in t: + if c.get(k, 0) == 0: + return False + c[k] -= 1 + if c[k] == 0: + del c[k] + if len(c) == 0: + return True + else: + return False + + +""" +걸린 시간: 8분 + +복잡도: s의 빈도수 세는 것이 O(n), t를 순회하면서 확인하는 것 O(n), 마지막에 c의 길이 확인하는 것은 소문자 26개이므로 O(1)이므로 전체 시간복잡도는 O(n)이다. +Counter로 s의 빈도수를 센 것말고는 없는데 이것도 소문자 26개가 최대 길이이므로 공간복잡도는 O(1)이다. + +해설: anagram은 문자열 구성을 그대로 써서 재배열했을 때 만들 수 있나 여부이다. +따라서 s의 글자 빈도 수를 세고, t가 그 글자와 다른 글자를 썼거나, 빈도수가 다르다면 False 아니라면 True로 출력한다. +이때 s가 t를 포함한다면 False로 반복문을 나올 수 없으므로 Counter 객체에서 빈도수가 0이 된것은 key를 삭제하여 빈도수가 완전히 같은지 확인한다. + +근데 사실 이럴 필요 없이 길이가 다르면 바로 False처리하고, Counter(s) == Counter(t) 여부만 확인해도 끝난다.. +""" \ No newline at end of file