Problem Solving 2022. 9. 3. 20:27

[LeetCode] 49. Group Anagrams (JS)

목차
  1. 핵심 아이디어
  2. 복잡도
  3. 설명
  4. 코드 (Javascript)

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

 

Group Anagrams - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

핵심 아이디어

  • 순서가 다른 문자열은 정렬하면 같은 문자열이 된다

 

복잡도

  • 시간 복잡도: O(N * KlogK)
    • 문자열 N개 * K길이 문자열 정렬 KlogK
  • 공간 복잡도: O(N)
    • anagrams hash map (이차원처럼 보이지만, 전체 개수는 N개이다)

 

설명

"문자열 배열을 받아 애너그램 단위로 그룹핑하라"

 

순서가 다른 문자열 애너그램은 정렬하면 같은 문자열이 된다는 것을 활용하여 이를 key로 사용한 hashMap에 문자열들을 리스트로 저장한다.

[...str]을 쓰면 str.split() 없이도 문자열이 배열로 바뀐다는 것을 배웠다.

 

코드 (Javascript)

/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    const anagrams = strs.reduce((prevMap, str) => {
        const key = [...str].sort().join("");
        
        if(!prevMap.has(key)) {
            prevMap.set(key, [str]);
            return prevMap;
        }
        
        prevMap.set(key, [...prevMap.get(key), str]);
        return prevMap;
    }, new Map());
    
    return [...anagrams.values()];
};
저작자표시 (새창열림)

'Problem Solving' 카테고리의 다른 글

[LeetCode] 42. Trapping Rain Water - 스택 풀이 (Python)  (0) 2024.03.01
[LeetCode] 5. Longest Palindromic Substring (JS)  (0) 2022.09.03
[LeetCode] 819. Most Common Word (JS)  (0) 2022.09.03
[LeetCode] 937. Reorder Data in Log Files (JS)  (0) 2022.09.03
[LeetCode] 344. Reverse String (JS)  (0) 2022.08.22
  1. 핵심 아이디어
  2. 복잡도
  3. 설명
  4. 코드 (Javascript)
'Problem Solving' 카테고리의 다른 글
  • [LeetCode] 42. Trapping Rain Water - 스택 풀이 (Python)
  • [LeetCode] 5. Longest Palindromic Substring (JS)
  • [LeetCode] 819. Most Common Word (JS)
  • [LeetCode] 937. Reorder Data in Log Files (JS)
개발자 이우진
이우진 기술 블로그
  • All (86)
    • Spring Framework (20)
    • MSA (7)
      • Event Driven Architecture (3)
    • Java (3)
    • Flink (2)
    • Computer Science (9)
      • Object Oriented Programming (3)
    • Problem Solving (15)
    • Design Pattern (0)
    • React (4)
    • Javascript (2)
    • Web (3)
    • Tools & Environment (3)
    • C++ (2)
    • misc (5)
    • Essay (3)
      • 기술 회고 (5)
  • 홈
  • 태그
  • 관리자
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
[LeetCode] 49. Group Anagrams (JS)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.