알고리즘 Day 02!
먼저 Anagram이란 무엇인가?
두 개의 문자를 비교하여 같은 의미는 아니지만 서로 같은 알파벳을 사용했는지를 알아내는 문제!
한국어로 치면 자유와 유자는 다른 의미지만 anagram적인 면으로 비교한다면 같은 것이다.
거의 3시간 넘게 붙잡고 있었지만 도저히 진도가 나가지 않아 결국 튜토리얼 영상 참고..
해당 알고리즘을 이해하고, 관련된 함수를 정리하는 것만으로도 도움이 많이 될 것이라 생각한다.
같은 값을 가진 요소가 있는지 boolean 형식으로 나타내주는 함수
const set1 = new Set([1, 2, 3, 4, 5]);
console.log(set1.has(1));
// expected output: true
Map 객체 내에서 반환하고자 하는 요소의 키값을 ()안에 넣는다
var myMap = new Map();
myMap.set('bar', 'foo');
myMap.get('bar'); // "foo" 반환.
myMap.get('baz'); // undefined 반환.
주어진 요소를 추가하고 해당 요소가 이미 있을 경우 대체함
myMap.set('bar', 'foo')
.set(1, 'foobar')
.set(2, 'baz');
이렇게 체인해서 사용가능함
유사 배열 객체나 반복 가능한 객체를 복사해 새로운 배열을 만듬
const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
// ['a', 'b'];
var groupAnagrams = function(strs) {
const mapping = {};
for (let str of strs) {
const sorted = str.split('').sort().join('');
(!mapping[sorted]) ? mapping[sorted] = [str] : mapping[sorted].push(str);
}
return Object.values(mapping);
};