function solution(s) {
const set = new Set(s.split(""));
let result = [];
Array(...set).map(v => {
let reg = new RegExp(`[${v}]`, 'g');
s.match(reg).length === 1 && result.push(v);
})
return result.sort().join("");
}
set์ผ๋ก ๋ง๋ค์ด์ ์ค๋ณต๋์ง ์์ ์ํ๋ฒณ์ ํ๋์ฉ reg ๋ฌธ์ผ๋ก match ํ ํ, ๊ธธ์ด๊ฐ 1์ด๋ฉด ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ฃ์ด์คฌ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ํ๋ฒณ์์ผ๋ก sort ํด์ค ํ ๋ฌธ์์ด๋ก return ํด์ค.
โก์ ๊ท์์ ๋ณ์ ๋ฃ๋ ๋ฒ
const ๋ณ์ = 'abc';
const regex = new RegExp(`[${๋ณ์}]`, 'g');
console.log(regex) // /[abc]/g
์๊ฐ์ด ๋ฉ์ก๋ ๋ค๋ฅธ ์ฌ๋์ ํ์ด)
function solution(s) {
let res = [];
for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
return res.sort().join('');
}
=> ๋ฌธ์์ index๊ฐ ๋ง์ง๋ง์ผ๋ก ์ฐพ์ ๋ฌธ์์ index์ ๊ฐ์ผ๋ฉด ==> 1๊ฐ ๋ฐ์ ์๋ ๊ฒ!
โก for ... of
for...of ๋ช ๋ น๋ฌธ์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด (Array, Map, Set, String, TypedArray, arguments ๊ฐ์ฒด ๋ฑ์ ํฌํจ)์ ๋ํด์ ๋ฐ๋ณตํ๊ณ ๊ฐ ๊ฐ๋ณ ์์ฑ๊ฐ์ ๋ํด ์คํ๋๋ ๋ฌธ์ด ์๋ ์ฌ์ฉ์ ์ ์ ๋ฐ๋ณต ํํฌ๋ฅผ ํธ์ถํ๋ ๋ฃจํ๋ฅผ ์์ฑํฉ๋๋ค.
=> ๋ด๊ฐ set๋ก ๋ง๋ ํ map ์ ํด์คฌ๋ ๊ฒ์ ์ด๋ ๊ฒ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค ์ ์์๋ค.
const array1 = ['a', 'b', 'c'];
for (const element of array1) {
console.log(element);
}
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
โก for ... in
for...in๋ฌธ์ ์์๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ๋ค์ ํฌํจํ์ฌ ๊ฐ์ฒด์์ ๋ฌธ์์ด๋ก ํค๊ฐ ์ง์ ๋ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ์ ๋ํด ๋ฐ๋ณตํฉ๋๋ค. (Symbol๋ก ํค๊ฐ ์ง์ ๋ ์์ฑ์ ๋ฌด์ํฉ๋๋ค.)
for( ๋ณ์ in ๊ฐ์ฒด)
=> ๊ฐ์ฒด์ ๋ชจ๋ ์ด๊ฑฐํ ์ ์๋ ํ๋กํผํฐ์ ๊ฐ์๋งํผ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ ์ ํ๋ ์คํ๋ฌธ.
์ฐจ์ด์ :
for in ์ ๊ฐ์ฒด์ ์ด๊ฑฐ ๊ฐ๋ฅํ ํ๋กํผํฐ๋ฅผ ์์์ ์์๋ก ๋ฐ๋ณต
for of ๋ iterable ๊ฐ์ฒด๊ฐ ๋ฐ๋ณตํ๋๋ก ์ ์ํ ๊ฐ์ ๋ฐ๋ณต
๊ฐ์ฒด์ property๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ๋ง์ง ์์ผ๋, ์ผ๋ฐ ๋ฐฐ์ด, ๋ฌธ์์ด ๋ฑ์์๋ of ๋ฅผ ์ด๋ค๊ณ ์๊ฐํ๋ฉด ๋๊ฒ ๋ค.
์ฐธ์กฐํ ๋ธ๋ก๊ทธ
https://developerntraveler.tistory.com/122