<aside> 👉🏿 문제 링크
</aside>
<aside> 👉🏿 문자열 s, t가 주어진다.
t가 s의 anagram인 경우 true를 아닐 경우 false를 반환하라.
</aside>
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
<aside> 👉🏿 일단 테스트로 파이썬 내장함수를 사용해서 바로 풀어보았다.
하지만 문제가 원하는 답이 이게 아닐 터,
힙 정렬로 풀어보자.
힙 정렬은 heapq 사용과 직접 구현 두가지 모두 해보았다.
</aside>
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if sorted(s) == sorted(t) :
return True
else :
return False
<aside> 👉🏿 힙의 구현은 설명하지 않는다.
따로 heap_sort()라는 함수를 생성해서
heap에 값을 넣고 추출하는 과정을 넣었다.
정렬된 s와 t가 같다면 True를 반환하도록 했다.
</aside>
def heap_sort(text):
heap = BinaryHeap()
for char in text:
heap.insert(char)
results = [heap.extract() for _ in range(len(text))]
return results
class Solution:
def isAnagram(self, s: str, t: str):
if heap_sort(s) == heap_sort(t) :
return True
else :
return False
<aside> 👉🏿 heapq 모듈도 동일한 알고리즘을 사용한다.
</aside>
def heap_sort(self, text):
heap = []
for word in text:
heapq.heappush(heap, word)
results = [heapq.heappop(heap) for _ in range(len(text))]
return results
def isAnagram(self, s: str, t: str) -> bool:
if self.heap_sort(s) == self.heap_sort(t):
return True
else:
return False