인프런 커뮤니티 질문&답변

Yeonho Kim님의 프로필 이미지

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

7. 아나그램(Hash Map)

아나그램 문제의 전제조건이 있나요??

23.01.10 15:56 작성

·

311

·

수정됨

0

      let a = "AbaAeCeo";
      let b = "baeeACA";

아나그램 찾는 문제에서 두 문자는 문자의 개수는 각가 다를 수 있지만 동일한 문자를 사용한다는 전제조건 하에 아나그램 여부를 찾는 건가요?

위와 같이 a에는 'o'가 있고 b에는 없을때 yes를 리턴합니다

   let a = "AbaAeCe";
      let b = "baeeACAo";

위와 같이 b에는 있고 a에는 있을때 no를 리턴합니다.

function solution(str1, str2) {
        let hs1 = new Map();
        let hs2 = new Map();
        let answer = true;
        for (let x of str1) {
          if (!hs1.has(x)) {
            hs1.set(x, 1);
          } else {
            hs1.set(x, hs1.get(x) + 1);
          }
        }
        for (let x of str2) {
          if (!hs1.has(x) || hs1.get(x) === 0) return "No";
          hs1.set(x, hs1.get(x) - 1);
        }
        return answer;
      }
      let a = "AbaAeCe";
      let b = "baeeACAo";

      console.log(solution(a, b));

답변 1

1

김정근님의 프로필 이미지

2023. 01. 14. 16:08

지나가다 답변합니다

아나그램 문제 보시면, "길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별하는 프로그램을 작성하세요."라고 하니까 길이가 같다는 전제 조건이 있는 게 맞습니다

만약 그 전제 조건이 없다면, 솔루션 함수 맨 앞에 if(str1.length!==str2.length) return "NO"; 한 줄만 추가해 주면 되겠네요