Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions valid-anagram/hyogshin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
'''
풀이:
- t 기준 for loop 돌리고 visited 배열 만들어서 s의 모든 곳을 방문하게 함
- t 안의 문자가 s에 없고 visited 가 False 인 경우 -> visited 배열 True로 변경
- but) 중복 문자가 있는 경우 index 사용에 한계가 있음
- so) t의 문자가 s에 있는 경우 해당 문자를 s 배열에서 탈락시킴

시간 복잡도: O(n^2)
- for loop -> O(n)
- digit in list -> 최악의 경우 O(n)
- 최악의 경우 O(n^2)

공간 복잡도: O(n)
- s 문자열을 리스트로 만듬 -> 문자열 크기는 입력됨 = n -> O(n)
'''

class Solution:
def isAnagram(self, s: str, t: str) -> bool:
l = list(s)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리스트에서의 in 체크와 remove()는 매번 선형 탐색이 필요하므로 비효율적. O(n^2) 시간 복잡도 로 collections.Counter, 정렬, 해시맵 기반 풀이 활용 방안 검토 추천합니다

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 감사합니다!

for d in t:
if d in s and d in l:
l.remove(d)
else:
return False

if not l:
return True
else:
return False

Loading