๋ชฉ์ฐจ
1. HashMap์ด๋?
2. ํด์ฑ
3. ๋ฒํท
4. ์ถฉ๋์ฒ๋ฆฌ ๋ฐฉ๋ฒ
4-1) ์ฒด์ด๋
4-2) ์คํ ์ด๋๋ ์ฑ
4-2-1) ์ ํํ์ฌ
4-2-2) ์ด์ฐจํ์ฌ
4-2-3) ์ด์คํด์ฑ
5. HashMap์ ์ฃผ์ ๋ฉ์๋
6. ์ฑ๋ฅ ํน์ฑ (์๊ฐ๋ณต์ก๋ / ๊ณต๊ฐ๋ณต์ก๋)
7. HashMap VS HashTable
8. ๋ฌธ์ ํ์ด
๐ฉ๐ป HashMap ์ด๋?
HashMap ์ Key์ Value๊ฐ ์์ ์ด๋ค ์ ์ฅ๋๋ ํํ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๊ฐ key๋ ๊ณ ์ ํ์ฌ ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ key๋ฅผ ์ฌ์ฉํ์ฌ ํด๋นํ๋ Value์ ์ ๊ทผํ๋ ๋ฐฉ์์ด๋ค.
โ๏ธ ํด์ฑ (Hashing)
* Hash Map์ ํต์ฌ์ด ๋๋ ์๋ฆฌ๋ก ํค๋ฅผ ํน์ ๊ณ์ฐ์์ ๋ฃ์ด ๋์จ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ๊ทผํ๋ ๊ณผ์ ์ด๋ค.
(ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํค๋ฅผ ํด์ ์ฝ๋๋ก ๋ณํํ๋ฉฐ ์ด ํด์ ์ฝ๋๋ HashMap ๋ด๋ถ์ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋๋ค. )
์ฆ, ํค๊ฐ ํด์ ํจ์๋ฅผ ํตํด ๋ฐฐ์ด์ ํน์ ์์น์ ๋งคํ๋๋ค.
- ํด์ฑ ํจ์ :ํค๋ฅผ ํด์๊ฐ์ผ๋ก ๋งคํํ๋ ์ฐ์ฐ
- ํด์ ํ ์ด๋ธ : ํค-๊ฐ์ ์ฐ๊ด์์ผ ์ ์ฅํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
โ๏ธ ๋ฒํท (Bucket)
๊ฐ์ ํด์ ์ฝ๋๋ฅผ ๊ฐ๋ ํค-๊ฐ ์๋ค์ ๊ฐ์ ๋ฒํท์ ์ ์ฅ๋๋ค. ๊ฐ ๋ฒํท์ ๋ฐฐ์ด์ ์ฌ๋กฏ์ ๋ํ๋ด๋ฉฐ, ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋งํฌ๋ ๋ฆฌ์คํธ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅํ๋ค.
โ๏ธ ์ถฉ๋ ์ฒ๋ฆฌ(Collision Handling)
ํด์ ํจ์๊ฐ ์๋ก ๋ค๋ฅธ ํค๋ค์ ๋ํด ๋์ผํ ํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ๋ค. ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ฐฉ๋ฒ์ ์ฒด์ด๋(Chaining)๊ณผ ์คํ ์ด๋๋ ์ฑ (Open Addressing)์ด๋ค. ์ฒด์ด๋์ ๊ฐ ๋ฒํท์ด ๋งํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ถฉ๋์ ํด๊ฒฐํ๊ณ , ์คํ ์ด๋๋ ์ฑ์ ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋น ์ฌ๋กฏ์ ์ฐพ์ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
1) ์ฒด์ด๋(Chaining)
์ฒด์ด๋์ ๊ฐ ๋ฒํท์ด ํ๋์ ์ฌ๋กฏ์ด ์๋๋ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)๋ ๋ค๋ฅธ ์ปฌ๋ ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐฉ์์ด๋ค. ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ํด๋น ์ฌ๋กฏ์ ๊ฐ์ ์ถ๊ฐํ๋ ๋์ ๋ฆฌ์คํธ์ ์๋ก์ด ๊ฐ์ ์ถ๊ฐํ๋ค.
์ฅ์ :
- ํด์ ํ ์ด๋ธ์ด ๊ฝ ์ฐจ๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ์ญ์ ๊ฐ ๊ฐ๋จํ๋ค.
๋จ์ :
- ์ธ๋ถ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค.
- ๋ง์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ฆฌ์คํธ๊ฐ ๊ธธ์ด์ ธ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ ์ ์๋ค.
2) ์คํ ์ด๋๋ ์ฑ(Open Addressing)
์คํ ์ด๋๋ ์ฑ์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ๋น ์ฌ๋กฏ์ ์ฐพ์ ์ฝ์ ํ๋ ๋ฐฉ์์ด๋ค. ์ฃผ์ ๊ธฐ๋ฒ์ผ๋ก๋ 1. ์ ํ ํ์ฌ(Linear Probing), 2. ์ด์ฐจ ํ์ฌ(Quadratic Probing), 3. **์ด์ค ํด์ฑ(Double Hashing)**์ด ์๋ค.
2-1) ์ ํ ํ์ฌ (Linear Probing)
์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์ ํด์ง ๊ฐ๊ฒฉ(๋ณดํต 1์ฉ ์ฆ๊ฐ)์ผ๋ก ๋ค์ ์ฌ๋กฏ์ ํ์ธํ๋ค.
์ฅ์ : ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ํ์ ์๋ค.
๋จ์ : ํด๋ฌ์คํฐ๋ง ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ(๋ง์ ์ถฉ๋์ด ์ธ์ ํ ์ฌ๋กฏ์ ๋ชฐ๋ฆฌ๋ ๊ฒ) <- ๊ตฐ์งํ
2-2) ์ด์ฐจ ํ์ฌ (Quadratic Probing)
์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์ด์ฐจํจ์๊ผด (ex) 1, 4, 9, 16 ... ํํ๋ก ์ฌ๋กฏ์ ํ์ธํ๋ค.
์ฅ์ : ๊ตฐ์งํ๋ฅผ ์ค์ฌ์ค๋ค.
๋จ์ : ์ด์ฐจ ํจ์์ ๋ฐ๋ผ ํน์ ํจํด์ผ๋ก ์ด์ฐจ ๊ตฐ์งํ๊ฐ ์ผ์ด๋ ์ ์๋ค.
2-3) ์ด์ค ํด์ฑ (Double Hashing)
์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ ๋ฒ์งธ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์์น๋ฅผ ์ฐพ๋ ๊ธฐ๋ฒ์ด๋ค.
์ด์คํด์ฑ์ ๋ ๊ฐ์ง์ ํด์ ํจ์๋ ๋ฌ๋ผ์ผ ํค๋ฅผ ๋ ์ ๋ถ๋ฐฐํ ์ ์๋ค.
๋ํ ํด์ฑํจ์์ ์๊ฐ๋ณต์ก๋๊ฐ O(1)์ด์ฌ์ผ ์ฑ๋ฅ์ด ์ข์ผ๋ฉฐ ๋ ๋ฒ์งธ ํด์ํจ์์ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋๋ฉด ์ฒซ ๋ฒ์งธ ํด์ํจ์์ ๊ฒฐ๊ณผ์ ๊ฐ์์ง๋ฏ๋ก ๊ฒฐ๊ณผ๊ฐ 0์ด๋ฉด ์๋๋ค.
์ฅ์ : ๊ตฐ์งํ๋ฅผ ์ค์ฌ์ค๋ค.
๋จ์ : ๋ ๊ฐ์ ํด์ ํจ์๊ฐ ํ์ํ๋ค.
์ถฉ๋ ์ฒ๋ฆฌ๋ ํด์๋งต์ ์ฑ๋ฅ์ ์ ์งํ๋๋ฐ ๋งค์ฐ ์ค์ํ๋ค.
์ฒด์ด๋์ ์ธ๋ถ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ์ฌ ์ถฉ๋์ ํด๊ฒฐํ๊ณ , ์คํ ์ด๋๋ ์ฑ์ ํด์ ํ ์ด๋ธ ์์ฒด์์ ์ถฉ๋์ ํด๊ฒฐํ๋ค.
๊ฐ ๋ฐฉ๋ฒ์๋ ์์ ์์ ํ ๊ฒ๊ณผ ๊ฐ์ด ์ฅ ๋จ์ ์ด ์์ผ๋ฉฐ, ํน์ ์ํฉ๊ณผ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ ํํด์ผ ํ๋ค.
โ๏ธ HashMap์ ์ฃผ์ ๋ฉ์๋
- put(K key, V value): ์ฃผ์ด์ง ํค์ ๊ฐ ์์ HashMap์ ์ถ๊ฐํฉ๋๋ค. ๋ง์ฝ ํค๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด ํด๋น ํค์ ๊ฐ์ ์ ๊ฐ์ผ๋ก ๋์ฒดํ๋ค.
- get(Object key): ์ฃผ์ด์ง ํค์ ํด๋นํ๋ ๊ฐ์ ๋ฐํํ๋ค. ๋ง์ฝ ํค๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด null์ ๋ฐํํ๋ค.
- remove(Object key): ์ฃผ์ด์ง ํค์ ๊ทธ์ ๋์ํ๋ ๊ฐ์ HashMap์์ ์ ๊ฑฐํ๋ค.
- containsKey(Object key): ์ฃผ์ด์ง ํค๊ฐ HashMap์ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํ๋ค.
- containsValue(Object value): ์ฃผ์ด์ง ๊ฐ์ด HashMap์ ํ๋ ์ด์ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํ๋ค.
- size(): HashMap์ ์ ์ฅ๋ ํค-๊ฐ ์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
โ๏ธ์ฑ๋ฅ ํน์ฑ
- ์๊ฐ ๋ณต์ก๋: HashMap์ ํ๊ท ์ ์ผ๋ก O(1)์ ์๊ฐ ๋ณต์ก๋๋ก ์์ ์๊ฐ์ ํค-๊ฐ ์์ ์ฝ์ , ์ญ์ , ๊ฒ์ํ ์ ์๋ค. ํ์ง๋ง ์ต์ ์ ๊ฒฝ์ฐ(๋ชจ๋ ํค๊ฐ ๊ฐ์ ํด์ ์ฝ๋๋ฅผ ๊ฐ์ง ๋)์๋ O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค.
- ๊ณต๊ฐ ๋ณต์ก๋: HashMap์ ํค-๊ฐ ์์ ์ ์ฅํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ๊ณต๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ถฉ๋์ด ๋ง์์๋ก ๋ ๋ง์ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค.
โ๏ธ Hash Map ๊ณผ Hash Table์ ๋น๊ต
๊ณตํต์
- ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ: ๋ ๋ค ๋ด๋ถ์ ์ผ๋ก ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ํค๋ฅผ ํด์ ๊ฐ์ผ๋ก ๋ณํํ๊ณ , ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
- ํค-๊ฐ ์: ๋ ๋ค ํค-๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ํค๋ ์ ์ผํด์ผ ํ๋ค.
์ฐจ์ด์
1. ๋๊ธฐํ (Synchronization)
- Hashtable: ๋๊ธฐํ๋(synchronized) ๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ์ค๋ ๋ ์์ ํฉ๋๋ค. ์ด๋ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋์์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ Hashtable์ ์ ๊ทผํ๋๋ผ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ค.
- HashMap: ๋๊ธฐํ๋์ง ์์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ์ค๋ ๋ ์์ ํ์ง์๋ค. ๋ฐ๋ผ์ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ธ๋ถ์์ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค.
2. ์ฑ๋ฅ (Performance)
- Hashtable: ๋๊ธฐํ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์๋์ ์ผ๋ก ๋ฎ์ ์ ์๋ค.
- HashMap: ๋๊ธฐํ๊ฐ ์์ด์ ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์ Hashtable๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
3. Null ํค์ ๊ฐ (Null Keys and Values)
- Hashtable: ํค์ ๊ฐ ๋ชจ๋ null์ ํ์ฉํ์ง ์๋๋ค.
- HashMap: ํ๋์ null ํค์ ์ฌ๋ฌ ๊ฐ์ null ๊ฐ์ ํ์ฉํ๋ค.
4. ์ด๊ธฐ ์ฉ๋๊ณผ ํ์ฅ (Initial Capacity and Load Factor)
- Hashtable: ๊ธฐ๋ณธ ์ด๊ธฐ ์ฉ๋์ 11์ด๊ณ , ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ ๋ ๋ฐฐ๋ก ์ฆ๊ฐํ๋ค. ๊ธฐ๋ณธ ๋ก๋ ํฉํฐ(load factor)๋ 0.75์ด๋ค.
- HashMap: ๊ธฐ๋ณธ ์ด๊ธฐ ์ฉ๋์ 16์ด๊ณ , ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ ๋ ๋ฐฐ๋ก ์ฆ๊ฐํ๋ค. ๊ธฐ๋ณธ ๋ก๋ ํฉํฐ๋ 0.75๋ก, ๋ก๋ ํฉํฐ๋ฅผ ํตํด ํด์ ํ ์ด๋ธ์ ๋ฐ๋๋ฅผ ์กฐ์ ํ ์ ์๋ค.
5. ์์ ๊ณ์ธต ๊ตฌ์กฐ (Inheritance Hierarchy)
- Hashtable: Hashtable ํด๋์ค๋ Dictionary ํด๋์ค๋ฅผ ์์๋ฐ๊ณ ์์ผ๋ฉฐ, Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค. ์ด๋ Legacy ํด๋์ค์ด๋ค.
- HashMap: HashMap ํด๋์ค๋ AbstractMap ํด๋์ค๋ฅผ ์์๋ฐ๊ณ Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค. ์ด๋ ๋ ํ๋์ ์ธ ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ์ผ๋ถ์ด๋ค.
๊ฒฐ๋ก :
- HashMap์ ๋ ์ ์ฐํ๊ณ , ์ฑ๋ฅ์ด ์ฐ์ํ๋ฉฐ, ์ฑ๊ธ์ค๋ ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค.
- Hashtable์ ์ค๋ ๋ ์์ ์ ๋ณด์ฅํ์ง๋ง, ์ฑ๋ฅ์ด ๋จ์ด์ง๊ณ ํ๋์ ์ธ ์ฌ์ฉ์๋ ๋ ์ ํฉํ๋ค.
(๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์๋ HashMap์ ์ฌ์ฉํ ๋ ์ธ๋ถ์์ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ConcurrentHashMap๊ณผ ๊ฐ์ ์ค๋ ๋ ์์ ํ ๋์์ ๊ณ ๋ คํ ์ ์๋ค)
โ๏ธ ๊ด๋ จ ๋ฌธ์ ํ์ด
1) ๋ฐฑ์ค 26008๋ฒ : ํด์ํดํน (๋ณต์ต)
ํด๋น ๋ฌธ์ ๋ ํด์ํจ์์ ์ด๋ก ์ ๋ํ ๋ฌธ์ ์ง๋ง ํ์ด๋ฒ์ ๊ทธ๋ฅ ์ํ์ ์ผ๋ก ๋ค๊ฐ๊ฐ์ผ ์๊ฐ์ ๋๊ธฐ์ง ์๊ณ ํ ์ ์๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int a = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(br.readLine());
long result = 1;
for(int i=0; i<n-1; i++){
result = (result * m) % 1000000007;
}
System.out.println(result % 1000000007);
}
}
ํ์ด :
(h(p) = H)์ผ ๊ฒฝ์ฐ์ ์ = M (์๋ํ๋ฉด 0 <= h(p) <= M-1 ์ด๋ฏ๋ก)
๋ํ ๋ฐฐ์ด P์ ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ๊ธธ์ด๊ฐ N์ธ p๋ค์ด ๊ฐ๊ฐ 0~M-1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฏ๋ก M^N ๊ฐ๋ฅผ ๊ฐ์ง๋ค.
๋ฐ๋ผ์ h(p)๊ฐ ๊ตฌํ ํด์ฑ๊ฐ H์ผ ๊ฒฝ์ฐ์ ์ = ๋ฐฐ์ด P๊ฐ ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์ * h(p)์ ๊ฐ์ด H์ผ ํ๋ฅ ์ด๋ฏ๋ก
๊ตฌํ๊ณ ์ ํ๋ ๊ฐ = M^(N) * (1/M) = M^(N-1) ์ด๋ค.
๋ฌธ์ ์์๋ ๊ฐ์ด ๋๋ฌด ์ปค์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ฃผ์ด์ง ์กฐ๊ฑด์ผ๋ก % 1000000007์ ํด๊ฐ๋ฉด์ ๋ฌธ์ ๋ฅผ ํ์๋ค.
2. ํ๋ก๊ทธ๋๋จธ์ค : ํด์_์์
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
// Map์ key๊ฐ์ ์์์ ์ข
๋ฅ๋ก ๋๊ณ key๊ฐ์ด ์ค๋ณต๋๋ ๋งํผ value์ count++
Map<String, Integer> clothesMap = new HashMap<>();
for(int i=0; i<clothes.length; i++){
if(clothesMap.containsKey(clothes[i][1])){
int temp = clothesMap.remove(clothes[i][1]) + 1;
clothesMap.put(clothes[i][1], temp);
}else{
clothesMap.put(clothes[i][1], 1);
}
}
// count๋ฅผ ๋ชจ์๋ values๊ฐ ๊ฐ์ ธ์ค๊ธฐ
Collection<Integer> values = clothesMap.values();
// ๊ฒฝ์ฐ์ ์๋ ๊ฐ ์์๋ณ๋ก ๊ฐ์ง๊ณ ์๋ ์์์๊ฐ x์ผ๋ (x+1)C1 <- ์กฐํฉ ์ ๋ชจ๋ ๊ณฑํ ๋ค ์์ ์์
์ ๊ฒฝ์ฐ 1์ ๋นผ๋ ๊ฒ์ด๋ค.
for(Integer val : values){
answer *= (val + 1);
}
answer--;
return answer;
}
}
* ํ์ด๋ ์ด๋ ต์ง ์๊ฒ ํ์์ง๋ง, ๋ ๊น๋ํ ์ฝ๋๋ฅผ ๋ณด์๋๋ฐ, Stream์ ์ด์ฉํด์ ํธ๋ ๋ฐฉ๋ฒ์ ๋ ๊ณต๋ถํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค!!
๋ด๊ฐ ํผ ํ์ด๋ ๋น์ทํ๊ฒ๋ Collection์ iterator๋ก ๋ถ๋ฌ์ค๋๊ฒ์ ์ถ๊ฐํ๋ ์ ๋?
'์๊ณ ๋ฆฌ์ฆ > ์๋ฃ๊ตฌ์กฐ ์ด๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋ฆฌ(Tree) - ๋น์ ํ ์๋ฃ๊ตฌ์กฐ (0) | 2024.06.22 |
---|---|
Linked List - ์๋ฃ๊ตฌ์กฐ (0) | 2024.06.21 |
Array(๋ฐฐ์ด) - (์ ํ)์๋ฃ๊ตฌ์กฐ (0) | 2024.06.19 |
Queue - ์ ํ ์๋ฃ๊ตฌ์กฐ (0) | 2024.06.18 |
Stack - (์ ํ)์๋ฃ๊ตฌ์กฐ (0) | 2024.06.18 |