알고리즘 #day-02

seonja kim·2020년 6월 27일
0

알고리즘 Day 02!


문제


먼저 Anagram이란 무엇인가?


두 개의 문자를 비교하여 같은 의미는 아니지만 서로 같은 알파벳을 사용했는지를 알아내는 문제!


한국어로 치면 자유와 유자는 다른 의미지만 anagram적인 면으로 비교한다면 같은 것이다.


나의 풀이


거의 3시간 넘게 붙잡고 있었지만 도저히 진도가 나가지 않아 결국 튜토리얼 영상 참고..

해당 알고리즘을 이해하고, 관련된 함수를 정리하는 것만으로도 도움이 많이 될 것이라 생각한다.


찾아본 정답



이해를 위해 각 과정에 콘솔을 찍어보았다

몰랐던 함수 정리

has()

같은 값을 가진 요소가 있는지 boolean 형식으로 나타내주는 함수


예시 :
const set1 = new Set([1, 2, 3, 4, 5]);

console.log(set1.has(1));
// expected output: true

get()

Map 객체 내에서 반환하고자 하는 요소의 키값을 ()안에 넣는다


예시 :
var myMap = new Map();
myMap.set('bar', 'foo');

myMap.get('bar');  // "foo" 반환.
myMap.get('baz');  // undefined 반환.

set()

주어진 요소를 추가하고 해당 요소가 이미 있을 경우 대체함


예시 :
myMap.set('bar', 'foo')
     .set(1, 'foobar')
     .set(2, 'baz');
     
이렇게 체인해서 사용가능함

Array.from()

유사 배열 객체나 반복 가능한 객체를 복사해 새로운 배열을 만듬

  • 유사 배열 객체 : length 측정이 가능하고 index된 요소를 가진 객체

예시 :
const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
// ['a', 'b'];

참고할만한 문제풀이 (feat.위코드7기 동기)

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);
};
profile
Adventurer

0개의 댓글