2024. 7. 16. 23:25ใ๐ DevNote
Practice
Arrays & Hashing
โ ์ฒดํฌํฌ์ธํธ
1. Map ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋๊ฐ?
2. Map ๊ฐ์ฒด ์ด์ธ์ ๋น ๊ฐ์ฒด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฐ?
3. forEach, split, sort, join ์ ์ฌ์ฉ๋ฒ์ ์๊ณ ์๋๊ฐ?
์ด ๋ฌธ์ ๋ ํด์ ๋งต(Hash Map) ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
ํด์ ๋งต์ ํค-๊ฐ ์์ ์ ์ฅํ๊ณ , ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์
๋๋ค.
์ด ๋ฌธ์ ์์์ ํค๋ ๊ฐ ๋ฌธ์์ด์ ์ ๋ ฌ๋ ํํ์ด๊ณ , ๊ฐ์ ๊ฐ์ ์ ๋ ฌ๋ ํํ๋ฅผ ๊ฐ์ง๋ ๋ฌธ์์ด๋ค์ ๋ฐฐ์ด์
๋๋ค.
์๋ฃ๊ตฌ์กฐ
ํด์ ๋งต (Hash Map)
- ํค-๊ฐ ์์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ์ด ๋ฌธ์ ์์๋ ๊ฐ์ฒด({})๋ฅผ ํด์ ๋งต ์ฌ์ฉ
- ํด์ ๋งต์ ์ฌ์ฉํ๋ฉด ํน์ ํค์ ํด๋นํ๋ ๊ฐ์ ๋น ๋ฅด๊ฒ ์ฝ์
ํ๊ณ ๊ฒ์ํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ
ํด์๋งต์ ์ฌ์ฉํ ๊ทธ๋ฃนํ ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์์ด ๋ฐฐ์ด์ ์ํํ๋ฉด์, ๊ฐ ๋ฌธ์์ด์ ์ ๋ ฌ๋ ํํ๋ก ๋ณํํ์ฌ ํค๋ก ์ฌ์ฉํ๊ณ , ํด์ ๋งต์ ์ ์ฅ
- ๊ฐ์ ํค๋ฅผ ๊ฐ์ง๋ ๋ฌธ์์ด๋ค์ ๊ฐ์ ์๋๊ทธ๋จ ๊ทธ๋ฃน์ ์ํ๊ฒ ๋ฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ ๋จ๊ณ
- ์ด๊ธฐํ: ๋น ํด์ ๋งต(๊ฐ์ฒด)์ ์์ฑ
- ์ํ ๋ฐ ํค ์์ฑ: ์ฃผ์ด์ง ๋ฌธ์์ด ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ ๋ฌธ์์ด์ ์ ๋ ฌ๋ ํํ๋ก ๋ณํํ์ฌ ํค ์์ฑ
- ํด์ ๋งต์ ์ ์ฅ: ์์ฑ๋ ํค๋ฅผ ํด์ ๋งต์ ์ ์ฅ, ๋ง์ฝ ํค๊ฐ ํด์ ๋งต์ ์๋ค๋ฉด ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ๊ณ ํค๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด ํด๋น ๋ฐฐ์ด์ ๋ฌธ์์ด ์ถ๊ฐ
- ๊ฒฐ๊ณผ ๋ฐํ: ํด์ ๋งต์ ๊ฐ์ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ๋ฐํ
class Solution {
/**
* @param {string[]} strs
* @return {string[][]}
*/
groupAnagrams(strs) {
const map = {};
strs.forEach( str => {
const key = str.split('').sort().join('');
if(!map[key]) {
map[key] = [];
}
map[key].push(str);
});
return Object.values(map);
}
}