알고리즘 : anagram 모으기

dory·2021년 5월 23일
0

알고리즘

목록 보기
7/7

문제

다음과 같이 input이 주어졌을 때,같은 알파벳으로 이루어진 단어끼리 묶어주세요.

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

output에서 순서는 상관없습니다.

풀이

  • dic의 key이자 기준이 될 anagram을 만든다.

    let anagram = str.split('').sort().join('')
  • 키 값이 존재하지 않을 땐, anagram이 key가 되는 동시에 빈 배열에 해당 문자열을 value로 넣어준다.

  • 반면 이미 같은 angram이 존재할 땐, 배열에 해당 문자를 추가해준다.

    !dic[anagram]? dic[anagram]=[str] : dic[anagram].push.(str)
  • 최종적으로 반환해야 할 값은, dic의 value들이 들어있는 배열이므로, Object.values(dic)을 반환한다.

    return Object.values(dic)

0개의 댓글