아나그램
문제
주의할점: 두개의 단어는 길이가 무조건 같다!
나의코드
//sh1,sh2의 Map을 만들어 요소를 비교한다.
let str1 = "AAABBBCCC";
let str2 = "CCCBBBAAA";
let answer = "true";
// Map을 만들어 알파벳의 요소의 갯수를 계산하는 함수
function newMap(str) {
let map = new Map();
for (let x of str) {
if (map.has(x)) map.set(x, map.get(x) + 1);
else map.set(x, 1);
}
return map;
}
let sh1 = newMap(str1); // Map(3) { 'A' => 3, 'B' => 3, 'C' => 3 }
let sh2 = newMap(str2); // Map(3) { 'C' => 3, 'B' => 3, 'A' => 3 }
// 두개 비교
for (let s of str1) {
if (sh1.get(s) !== sh2.get(s)) answer = "false";
}
console.log(answer);
나의 코드 문제점
- 두개의 Map을 만든다음 다시 for문을 돌려서 비교해야한다. -> 하나의 Map을 만든다음 비교해보자.
개선
let str1 = "AAABBBCCC";
let str2 = "CCCBBBAAS";
let answer = "YES";
let sH = new Map();
// str1을 Map으로 각 알파벳의 갯수 알아보기.
for (let x of str1) {
if (sH.has(x)) sH.set(x, sH.get(x) + 1);
else sH.set(x, 1);
}
// str1에 str2의 알파벳을 넣는다.
// 있으면 -1을 해준다. -> 0이 되었을 경우에도 해당 알파벳이 나오면 false
// 없으면 false
for (let x of str2) {
if (!sH.has(x) || sH.get(x) == 0) answer = "NO";
sH.set(x, sH.get(x) - 1);
}
console.log(answer);
Author And Source
이 문제에 관하여(아나그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minho100227/아나그램저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)