## ๋ฌธ์ ##
// - sample์ด base์ ๋ถ๋ถ์งํฉ์ธ์ง ํ์ธํ๊ธฐ
// - ์
๋ ฅ: base: number[], sample: number[]
// - ์ถ๋ ฅ: boolean
// ## Pseudo Code ##
// * ์๊ฐ ๋ณต์ก๋ : 0(n) => add ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ (base ํฌ๊ธฐ) + has ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ (sample ํฌ๊ธฐ)
// * ๊ณต๊ฐ ๋ณต์ก๋ : 0(n) => add ํ๋๋ฐ ํ์ํ ๊ณต๊ฐ (base ํฌ๊ธฐ)
// - ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ๋ฉด, ์บ์๋ฅผ ์ด์ฉํด base๋ฅผ ์ ๋ถ ๊ธฐ์ตํ ์ดํ sample์ ํ๋์ฉ ํ์ธํด๋ณด๋ฉด ๋ ๊ฒ๊ฐ์
// base๋ ๋ฐฐ์ด์ด๊ณ , key:value ํํ๊ฐ ์๋ value ํํ๋๊น Set์ ์ด์ฉ
// 1. base๋ฅผ ์ํํ๋ฉด์ Set ์๋ฃ๊ตฌ์กฐ์ ๋ฃ๊ธฐ (base ์ ์๋ ๊ฐ๋ค์ ์ ๋ถ ๋ค ๊ธฐ์ต์ ํ ๋ค์์ )
// 2. sample์ ์ํํ๋ฉด์ Set์ ์๋์ง ํ์ธ => (smaple ํ๋์ฉ ๊ธฐ์ต์ ํ๋ฉด ๋ฒ ์ด์ค์ ์๋ ๊ฐ์ ์ ์ฅํ๋ ์๊ฐ๋ง ๋ค๊ณ )์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ฉ ์ฐพ๋ ์๊ฐ์ ์๋ค์ด๊ฒ๋
// => ์์ผ๋ฉด ๊ณ์ ์ํ
// => ์์ผ๋ฉด ๋ฐ๋ก ์ข
๋ฃ, return false => ๋ถ๋ถ์งํฉ์ด ์๋๋ฏ๋ก ๋ฐ๋ก ๋ฆฌํด
// => ์ ๋ถ ์์ผ๋ฉด return true
// - Set์ ์ฌ์ฉํ ์ด์ : Set์ has() ๋ฉ์๋์ ์๊ฐ๋ณต์ก๋๋ 0(1)์ด๋ 0(logn)์ด๋ผ๊ณ ์์๋๊ธฐ ๋๋ฌธ
// base์ sample์ด ์ธ์๋ก ๋ค์ด์ค๊ณ , ๋ง์ง๋ง ์ธ์๋ก set์ ์ด๊ธฐํ ํ๊ฒ์ ๋ฃ์ ๊ฒ์.
const isSubsetOf = function (base, sample, set = new Set()) {
base.forEach(v => set.add(v)); // base์ ๊ฐ์ set์ ๋ค ๋ฃ์
return sample.every(v => set.has(v)); // smaple์ ํ๋์ฉ ๋๋ฉด์ ์ํํ๊ณ
// has์ ๊ฐ์ด ์๋์ง ํ๋จํด์ ๊ฐ์ด ์์ผ๋ฉด ์ฆ์ fasle ๋ฆฌํด
// ์ ๋ถ๊ฐ ์์ผ๋ฉด true ๋ฆฌํด
};
// const isSubsetOf = function (base, sample) {
// const set = new Set();
// base.forEach(v => set.add(v));
// return sample.every(v => set.has(v));
// };
// ์ฝ๋ ๊ฐ์
// ๊ตณ์ด forEach() ์ฌ์ฉ์์ด Set์ด ์ธ์๋ฅผ ์ดํฐ๋ฌ๋ธ์ ๋ฐ๋๋ฐ base๊ฐ ๋ฐฐ์ด ์ด๋ค ๋ณด๋ ๋ฐฐ์ด์ ๋ฃ์ผ๋ฉด ์์ ํ๋ํ๋ ์ ์ฅ์ด ๋๋ค.
// ์ ์ด์ ์ด๊ธฐํ ํ ๋ sample, set = new(base) ๋ฃ์ด์ ์ด๊ธฐํ ์ํด
const isSubsetOf2 = function(base, sample, set = new(base)) {
return sample.every(v => set.has(v));
}
// Set ์ค๋ณต์ ๊ฑธ๋ฌ๋ด๋ ๊ธฐ๋ฅ๋ ์๋ค.
const isSubsetOf3 = function (base, sample) { // sample์ ์๋๊ฒ๋ค์ด ์ ๋ถ base์ ์์ผ๋ฉด
const all = new Set([...base, ...sample]) // new Set ํ ์ ์ค๋ณต์ด ์ ๊ฑฐ๊ฐ ๋๋ค. => ๊ฒฐ๊ตญ base๋ ๊ฐ์์ง๊ฒ ๋๋ค.
return all.size === base.length; // base.length ๊ฐ ๊ฐ์ผ๋ฉด ๊ฒฐ๊ตญ์ ๋ถ๋ถ์งํฉ์ด๋ผ๋ ์๋ฆฌ๋ค.
// base์ ๊ธธ์ด๋ ์๋ก ๋ง๋ all์ด๋ ๊ฐ์ผ๋ฉด์ ๋ถ๋ถ์งํฉ์ด ๋๋ค.
}
ref>
์ค์ค๋ก ํด๊ฒฐํ์ง ๋ชปํ ๋ฌธ์ ์ค ํ๋..๊ทธ๋ฐ๋ฐ ๋ ํผ๋ฐ์ค๋ฅผ ๋ด๋ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ฒฐ๊ตญ ์จ์๊ณ ์๋ ์ฐพ๊ธฐ ์ฑ๊ณต!! ์์นจ๋ถํฐ ๋ฐ์ง๊ฐ๋์ด ๋ถ์ก๊ณ 3๊ฐ์ง ๋ฐฉ๋ฒ ์ ์ํ์๋ฉด์ ํ๋ํ๋ ์ค๋ช ํด์ฃผ์ ๋๋ถ์ ์ฝ๋ ์์ฑ!! ๋๋๋๋ค...์ด๋ฉ์ด์งํ ์๊ฐ์ด์๋ค. ์ ๋๋ ์๊ฐํ์ง ๋ชปํ์๋๊ฐ...์์ฑ ๋ ๋ง์ดํ๊ณ ..1์๊ฐ๋์ด ์ด ์ฝ๋๋ฅผ ๊ณฑ์น์ด๋ณด๋ ์ค...๊ฐ์ ํ ์๊ฐ์ด๋ค. ์ ๋ง 1์๊ฐ์ฉ ์๋ฃ๊ตฌ์กฐ ์ฌํ ์์์ ์ด ํ์ํ๋ค....ํํ..๊ต์๋ ์์ฃผ ์ฐพ์๋ต๊ฒ ์ต๋๋ค. ๋๋ณด๋ค ๋ค ์ํ๋ฉด ๊ต์๋...์ด๋ผ๊ณ ์ง์นญํ๋ค..์ฌ๊ธฐ์..