반응형
49. Group Anagrams
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.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""]
Output: [[""]]
Example 3:
Input: strs = ["a"]
Output: [["a"]]
계획
문제 해결 전략
같은 알파벳을 가지고 있는 단어들을 array로 묶어서 그 array를 다시 모아서 array로 리턴해야 하는 문제입니다.
일단 string을 array들로 만들어줍니다. 만들어줄때 sort를 함으로써, 구성이 같다면, sort 된 후에는 같은 알파벳 구조가 나와야 합니다.
예를 들면 tea, ate가 sort되면 두 개다 aet가 리턴됩니다.
그리고, 맵을 만들어 이 두개값을 aet라는 키를 가진 맵에 value로 tea와 sort를 넣어줘야 합니다.
이걸 string 끝까지 반복시킨다음, 맵에 value들을 리턴 시키면 됩니다.
해설
const groupAnagrams = strs => {
const map = new Map()
for (let str of strs) {
const sorted = str.split('').sort().join('')//각 strs를 sort시킨다.
if (map.has(sorted)) { //만약 map 에 sort된 단어가 이미 존재한다면, [이미있던값 , 새로운값] 을 value로 넣습니다.
map.set(sorted, [...map.get(sorted), str])
} else {
map.set(sorted, [str]) //처음 발견된 패턴이면 현재 값만 넣습니다.
}
}
return [...map.values()] //map에 값을 모두 리턴
}
반응형
'개발공부 > LeetCode' 카테고리의 다른 글
[Javascript] 1663. Smallest String With A Given Numeric Value -쉬운 설명 (0) | 2022.03.22 |
---|---|
[JavaScript] 36. Valid Sudoku (0) | 2022.03.20 |
[JavaScript] 33. Search in Rotated Sorted Array - 쉬운설명 바이너리 서치 활용 (0) | 2022.03.19 |
[JavaScript]856. Score of Parentheses 쉬운설명, stack 사용 (0) | 2022.03.17 |
[JavaScript]34. Find First and Last Position of Element in Sorted Array - 쉬운설명 (0) | 2022.03.17 |