Group Anagram

Eunseo·2022년 5월 2일
0

LeetCode

목록 보기
1/2
post-thumbnail

Problem Link
https://leetcode.com/problems/group-anagrams/

Summary
정렬과 해시의 개념을 사용하는 문제


Description

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.


Checking List

  • 혼자서 문제를 해결
  • 힌트를 보고 해결
  • 답을 보고 해결

My Answer

  • Runtime: 88 ms, faster than 95.34%
  • Memory Usage: 17.3 MB, less than 81.67%
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        archive = {}
        for s in strs:
            sort_s = ''.join(sorted(s))
            if sort_s in archive:
                archive[sort_s].append(s)
            else:
                archive[sort_s] = [s]
        return list(archive.values())

Answer Sheet

class Solution(object):
    def groupAnagrams(self, strs):
        ans = collections.defaultdict(list)
        for s in strs:
            ans[tuple(sorted(s))].append(s)
        return ans.values()

출처: leetcode:GroupAnagram


Trial & Error

  • 딕셔너리에 저장할 때 조건문으로 분기하지 않고 쓰는 방법을 고민했지만 생각이 나지 않아 일단 제출했다.

Takeaway

  • get() 이라는 함수가 있어서 조건문 없이도 디폴트를 정해줄 수 있었다!

[수정버전] 참고

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        archive = {}
        for s in strs:
            sort_s = ''.join(sorted(s))
            archive[sort_s] = archive.get(sort_s, [])+[s]
        return archive.values()

profile
내가 공부한 것들

0개의 댓글