LeetCode No.49 - Group Anagrams


문제링크

접근

문제에 나와있듯이 애너그램이란 어떤 단어 혹은 구(phrase)를 재배열하여 만든 단어 혹은 구 입니다. 이 말에서 착안하여 배열 strs에 있는 각 문자열들을 정렬하여 Map 자료구조의 key로 사용하고, 해당 key에 대응하는 값으로 같은 애너그램 그룹에 속하는 문자열들의 배열을 둘 수 있습니다.

자바스크립트 풀이

const sortStringInAsc = (a, b) => a.charCodeAt(0) - b.charCodeAt(0);

function groupAnagrams(strs) {
  const group = new Map();
  for (const str of strs) {
    const key = [...str].sort(sortStringInAsc).join('');
    
    if (!(group.has(key))) group.set(key, []);
    group.get(key).push(str);
  }
  
  return [...group.values()];
}