anagram (hash)

steyu·2022년 10월 27일
0
  1. string을 배열로 전환뒤 sort
  2. sort된 배열을 다시 string으로 전환하고 key값으로 사용

1. Map을 이용한 방법

function solution(arr) {
  let map = new Map();

  for (const word of arr) {
    const sorted = word.toLowerCase().split("").sort().join(""); // split(str => arr), join(arr => str)
    if (!map.has(sorted)) {
      map.set(sorted, word);
    }
  }
  return Array.from(map.values());
}

split(str => arr), join(arr => str)
함수 마지막 줄의 map.values()는 맵의 값을 담은 반복 가능한 객체를 반환하는데,
Array.from은 이 반복 가능한 객체를 배열로 바꿔줍니다.
이 문제에서 키는 문자형이므로 맵 대신 일반적인 객체를 사용할 수도 있습니다.

2. 객체를 이용한 방법

function solution(arr) {
  let obj = {};

  for (const word of arr) {
    const sorted = word.toLowerCase().split("").sort().join("");
    if (!obj[sorted]) {
      obj[sorted] = word;
    }
  }
  return Object.keys(obj);
}

console.log(
  solution(["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"])
);

0개의 댓글