⚡문제 유형
배열,정렬, 해쉬 테이블, 문자열
📝문제
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.
그룹 아나그램 배열을 완성해라. 순서는 상관이 없다. 아나그램은 문자로 만들 수 있는 무작위 조합을 말한다.
📘예시
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Input: strs = ["a"]
Output: [["a"]]
Input: strs = [""]
Output: [[""]]
📗풀이
1. 문자열 마다 split 👉🏻 sort 👉🏻join 을 해준다
2. map에 키, 벨류 형태로 추가해준 후 벨류들만 출력해준다
map의 형태는
Map(3) {
'aet' => [ 'eat', 'tea', 'ate' ],
'ant' => [ 'tan', 'nat' ],
'abt' => [ 'bat' ]
}
로 나오게 된다.
📕코드
const groupAnagrams = function (strs) {
const map = new Map();
strs.forEach(v => {
const key = v.split('').sort().join('');
map.has(key) ? map.set(key, [...map.get(key), v]) : map.set(key, [v]);
})
return [...map.values()];
};
'자료구조&알고리즘 > 알고리즘' 카테고리의 다른 글
[LeetCode][JS] 1번 Two Sum (0) | 2022.07.22 |
---|---|
[LeetCode][JS] 136번 Single Number (0) | 2022.07.12 |
[LeetCode][JS] 1630번 Arithmetic Subarrays (0) | 2022.07.04 |
[LeetCode][JS] 150번 Evaluate Reverse Polish Notation (0) | 2022.06.14 |
[LeetCode][JS] 66번 Plus One (0) | 2022.06.13 |