티스토리 뷰

https://leetcode.com/problems/group-anagrams/description/

1. 문제분석
문자열 0~100자 1~10,000개 strs[] -> 아나그램을 그룹핑 (순서무관)
 -> 아나그램은, 순서 무관하게 동일한 문자로 이루어진 문자열

2. 풀어보기
[eat,tea,tan,ate,nat,bat] -> [[bat],[tan,nat],[eat,tea,ate]]

3. 슈도코드
string_by_anagram{} 맵을 만들어서
-> strs[] 돌려서 -> 각 str 알파벳을 정렬해서 -> 그걸 키로, str을 값으로 담고
-> 이거를 values만 추출해서 -> 배열로 묶어서 리턴

4. 구현코드

const groupAnagrams = (strs: string[]): string[][] => {
  const string_by_anagram = new Map<string, string[]>();

  for (let str of strs) {
    const key = str.split('').sort().join('');
    const list = string_by_anagram.get(key) ?? [];
    list.push(str);
    string_by_anagram.set(key, list);
  }

  return Array.from(string_by_anagram.values());
};


5. 풀이회고
간단한 문제였지만, JS 로직의 한계상 문자열을 직접 정렬시킬 수 없어서 아쉽다.

계수정렬로 O(N) 만에 key를 생성하는 코드가 있긴 하던데.. 가벼운 로직이고 하니 가독성 좋은 현재 코드 유지한다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함