아나그램

성석민·2022년 5월 5일
1

알고리즘

목록 보기
38/72
post-thumbnail

github 전체코드

문제

두 문자열이 알파벳의 나열 순서는 다르지만 구성이 일치하면 두 단어는 아나그램이다.
두 단어가 주어질 때 두 단어가 아나그램이면 'YES'를 아니면 'NO'를 출력

풀이 과정

  1. Map객체를 생성한다.
  2. word1를 순회하면서 Map객체에 key값이 있다면 value를 1 증가, 없다면 value를 0으로 초기화
  3. word2를 순회하면서 Map객체에 key값이 있다면 value를 1 감소
  4. key값이 없다면 NO를 리턴
  5. key값이 있는데 value값이 0이면 아나그램이 아니므로 NO리턴
const solutionA = (word1, word2) => {
  const word1Map = new Map();

  for (const word of word1) {
    if (word1Map.has(word)) word1Map.set(word, word1Map.get(word) + 1);
    else word1Map.set(word, 1);
  }

  for (const word of word2) {
    if (word1Map.has(word)) word1Map.set(word, word1Map.get(word) - 1);

    if (!word1Map.has(word) || word1Map.get(word) === 0) return 'NO';
  }

  return 'YES';
};

const testA = solutionA('AbaAeCe', 'baeeACA');
console.log(testA);

const testB = solutionA('abaCC', 'Caaab');
console.log(testB);

틀린 부분이 있거나 보충해야 할 내용이 있다면 댓글이나 DM(sungstonemin)으로 알려주시면 감사하겠습니다😄

profile
기록하는 개발자

0개의 댓글