ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
Anagram์ด๋ ๋ ๋ฌธ์์ด์ด ์ํ๋ฒณ์ ๋์ด ์์๋ฅผ ๋ค๋ฅด์ง๋ง ๊ทธ ๊ตฌ์ฑ์ด ์ผ์นํ๋ฉด ๋ ๋จ์ด๋ ์ ๋๊ทธ๋จ์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด AbaAeCe ์ baeeACA ๋ ์ํ๋ฒณ์ ๋์ด ์์๋ ๋ค๋ฅด์ง๋ง ๊ทธ ๊ตฌ์ฑ์ ์ดํด๋ณด๋ฉด A(2), a(1), b(1), C(1), e(2)๋ก ์ํ๋ฒณ๊ณผ ๊ทธ ๊ฐ์๊ฐ ๋ชจ๋ ์ผ์นํฉ๋๋ค. ์ฆ ์ด๋ ํ ๋จ์ด๋ฅผ ์ฌ ๋ฐฐ์ดํ๋ฉด ์๋ํธ ๋จ์ด๊ฐ ๋ ์ ์๋ ๊ฒ์ ์๋๊ทธ๋จ์ด๋ผ ํฉ๋๋ค.
๊ธธ์ด๊ฐ ๊ฐ์ ๋ ๊ฐ์ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ฉด ๋ ๋จ์ด๊ฐ ์๋๊ทธ๋จ์ธ์ง ํ๋ณํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ ์. ์๋๊ทธ๋จ ํ๋ณ์ ๋์๋ฌธ์๊ฐ ๊ตฌ๋ถ๋ฉ๋๋ค.
๋ฌธ์ ํ์ด
key์ Value๋ฅผ ํ ์์ผ๋ก ์ ์ฌํ๋ Map() ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฌธ์์ด์ ๋ํด ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ ๋ค.๋ ๋ฌธ์์ด์์ Key์ ๊ฐ์ธ ์ํ๋ฒณ์ด ๋ค๋ฅด๋ค๋ฉด ์๋๊ทธ๋จ์ ์ ์ ์กฐ๊ฑด์ ์ฑ๋ฆฝํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ์ฐ์ฐ์ ์ข ๋ฃํ๋ค.๋ง์ฝ ์ค์ฒฉ for๋ฌธ ๋ด์์ ๋์ผํ Key๊ฐ์ ์ฐพ์ ๋ค ๊ทธ ๊ฐ์ด ๋์ผํ ๊ฒฝ์ฐ ์๋๊ทธ๋จ ์กฐ๊ฑด์ ์ฑ๋ฆฝํ๊ณ ๋ง์ง๋ง๊น์ง ์ํํ์ ๋๋์ฐพ์ง ๋ชปํ๋ค๋ฉด ์ด ๋ํ ์ ์ ์กฐ๊ฑด์ ์ฑ๋ฆฝํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ์ฐ์ฐ์ ์ข ๋ฃํ๋ค.
์ฝ๋
function solution(str1, str2) {
let answer = 0;
let sH1 = new Map();
let sH2 = new Map();
for (let x of str1) {
if (!sH1.has(x)) {
sH1.set(x, 1);
} else {
sH1.set(x, sH1.get(x) + 1);
}
}
for (let x of str2) {
if (!sH2.has(x)) {
sH2.set(x, 1);
} else {
sH2.set(x, sH2.get(x) + 1);
}
}
for (let [key1, val1] of sH1) {
if(answer === false) break;
for (let [key2, val2] of sH2) {
if (key1 !== key2) continue;
//๋ ๊ฐ์ ํค๊ฐ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ์ดํ ์ฐ์ฐ์ ์๋ตํ๊ณ ๋ค์ ์ธ๋ฑ์ค๋ฅผ ์ฐธ์กฐ
if (val1 === val2) answer = true;
else answer = false;
}
}
return answer;
}
let str1 = "AbaAeCe";
let str2 = "baeeACA";
console.log(solution(str1, str2));
๋ฌธ์ ํ์ด2
์์ ๊ฐ์ด ๊ฐ ๋ฌธ์์ด๋ง๋ค Map ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๊ณ ํด๋น Map ๊ฐ์ฒด์ Key์ Value ๊ฐ์ ์ฃผ๊ธฐ ์ํด ๋์ผํ ์ํ์ ํ๋ ๋ฐ๋ณต๋ฌธ์์ํ์ผ ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค.
์ด๋ฅผ ๋์ ์ ํ๋์ ๋ฌธ์์ด์ ๋ํด์๋ง Map ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๊ณ ํด๋น Map ๊ฐ์ฒด์ ์ ์ฌ๋์ด ์๋ ๋ฐ์ดํฐ ๊ฐ๊ณผ ๋ ๋ค๋ฅธ ๋ฌธ์์ด์๋ํ ๋ฐ์ดํฐ ๊ฐ์ ๋น๊ตํ๋ ์์ผ๋ก ๋์ฒดํ๊ณ ์ ํ๋ค.
ํฌํจ๋์ด ์๋ ๋ฌธ์์ ๊ฐฏ์๊ฐ ๊ฐ๋ค๋ ๋ง์ ๋ฌธ์์ด์ ์ํํ๋ฉฐ Map ๊ฐ์ฒด์ ๋์ผํ ๋ฌธ์๊ฐ ์์ ์, ํด๋น ๋ฌธ์์ ํ์๋ฅผ 1์ฉ ์์์์ผ ์ค๋ค๋ฉด ๊ฒฐ๊ตญ ๋ง์ง๋ง์ 0์ด ๋๋ค๋ ๊ฒ์ด๋ค. ์ฆ, 0 ์ด์์ด๋ฉด ๋ฌธ์์ด์ ๊ฐฏ์๊ฐ n๊ฐ ๋งํผ ๋ ์๋ค๋ ์๋ฏธ์ด๊ณ 0 ์ดํ์ผ ๊ฒฝ์ฐ n๊ฐ ๋งํผ ๋ ์๋ค๋ ์๋ฏธ๋ก ์๊ฐํ ์ ์๋ค.
์ฝ๋
function solution(str1, str2) {
let answer;
let sH1 = new Map();
for (let x of str1) {
if (!sH1.has(x)) {
sH1.set(x, 1);
} else {
sH1.set(x, sH1.get(x) + 1);
}
}
for(let x of str2) {
if(!sH1.has(x)) {
answer = false
break;
}
sH1.set(x, sH1.get(x) - 1);
if(sH1.get(x) === 0) answer = true;
else if(sH1.get(x) < 0) {
answer = false;
break;
}
}
return answer;
}
let str1 = "AbaAeCe";
let str2 = "baeeACA";
console.log(solution(str1, str2));
function solution(str1, str2){
let answer="true";
let sH = new Map();
for(let x of str1){
if(sH.has(x)) sH.set(x, sH.get(x)+1);
else sH.set(x, 1);
}
for(let x of str2){
if(!sH.has(x) || sH.get(x)==0) return "false";
sH.set(x, sH.get(x)-1);
}
return answer;
}
let a="AbaAeCe";
let b="baeeACA";
console.log(solution(a, b));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์คํ]์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2021.07.10 |
---|---|
๋ชจ๋ ์๋๊ทธ๋จ ์ฐพ๊ธฐ (0) | 2021.07.09 |
[ํด์ฌ]ํ๊ธ ํ์ฅ (0) | 2021.07.07 |
[์ฌ๋ผ์ด๋ฉ ์๋์ฐ]์ต๋ ๋งค์ถ (0) | 2021.07.06 |
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ] ์ฐ์ ๋ถ๋ถ ์์ด(2) (0) | 2021.07.05 |