let's get IT with DAVINA ๐ป
[์๋ฃ๊ตฌ์กฐ/์ ํ๊ตฌ์กฐ] ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ณธ๋ฌธ
์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์์๋ค์ ์ ์ฅํ ๋ ๊ทธ ๋ค์ ์์๊ฐ ์๋ ์์น๋ฅผ ํฌํจ์ํค๋ ๋ฐฉ์์ผ๋ก ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฑ์ง
- k๋ฒ์งธ ์์๋ฅผ ํ์ธ/๋ณ๊ฒฝํ๊ธฐ ์ํด O(k)๊ฐ ํ์ํจ
- ์ฐ๋ฆฌ๋ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๋ง ์๊ณ ์๊ธฐ ๋๋ฌธ, ์ฐจ๊ทผ์ฐจ๊ทผ ๋ค์ ์ฃผ์๋ก ๋์ด๊ฐ๋ฉฐ ์ฐพ์์ผ ํจ
- ์์์ ์์น์ ์์๋ฅผ ์ถ๊ฐ/์ ๊ฑฐ๋ O(1)
- ์ด์ ์์์ ๋ค์ ์ฃผ์๋ฅผ ๋ณ๊ฒฝ๋ง ํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์
- ๋จ, ์ถ๊ฐ/์ ๊ฑฐ ํ๊ณ ์ถ์ ์์น์ ์ฃผ์๋ฅผ ์๊ณ ์์ ๊ฒฝ์ฐ์๋ง O(1)
- ์์๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์์ ์ฐ์ํด์์ง ์์ Cache hit rate๊ฐ ๋ฎ์ง๋ง ํ ๋น์ด ๋ค์ ์ฌ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ข ๋ฅ
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๊ฐ ์์๊ฐ ์์ ์ ๋ค์ ์์์ ์ฃผ์๋ฅผ ๋ค๊ณ ์์
- ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๊ฐ ์์๊ฐ ์์ ์ ์ด์ & ๋ค์ ์ฃผ์๋ฅผ ๋ ๋ค ๋ค๊ณ ์์
- ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋์ด ์ฒ์๊ณผ ์ฐ๊ฒฐ๋์ด ์์
- ๊ฐ ์์๊ฐ ์ด์ ๊ณผ ๋ค์ ์์์ ์ฃผ์๋ฅผ ๋ชจ๋ ๋ค๊ณ ์์ด๋ ์๊ด X
๋ฐฐ์ด VS ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- BOTH → ์ ํ ์๋ฃ๊ตฌ์กฐ
๋ฐฐ์ด | ์ฐ๊ฒฐ ๋ฆฌ์คํธ | |
k๋ฒ์งธ ์์์ ์ ๊ทผ | O(1) | O(k) |
์์ ์์น์ ์์ ์ถ๊ฐ/์ ๊ฑฐ | O(N) | O(1) |
๋ฉ๋ชจ๋ฆฌ ์์ ๋ฐฐ์น | ์ฐ์ | ๋ถ์ฐ์ |
์ถ๊ฐ์ ์ผ๋ก ํ์ํ ๊ณต๊ฐ (Overhead) | - | O(N) |
๊ธฐ๋ฅ๊ณผ ๊ตฌํ
insert ํจ์
1. ์๋ก์ด ์์๋ฅผ ์์ฑ
2. ์ ์์์ pre ๊ฐ์ ์ฝ์ ํ ์์น์ ์ฃผ์๋ฅผ ๋์
3. ์ ์์์ nxt ๊ฐ์ ์ฝ์ ํ ์์น์ nxt๊ฐ์ ๋์
4. ์ฝ์ ํ ์์น์ nxt๊ฐ๊ณผ ์ฝ์ ํ ์์น์ ๋ค์ ์์์ pre๊ฐ์ ์ ์์๋ก ๋ณ๊ฒฝ
5. unused 1์ฆ๊ฐ
void insert(int addr, int num) { //์ฝ์
ํ ์์น addr, ์ฝ์
ํ ์ซ์ num
dat[unused]=num;
pre[unused]=addr; //์ฝ์
ํ ์์น๊ฐ ์ด์ ์์์ด๊ธฐ ๋๋ฌธ์.
nxt[unused]=nxt[addr];
if(nxt[addr]!= -1) pre[nxt[addr]]= unused; //์ฝ์
ํ ์์น์ ๋ค์ ์์์ pre๊ฐ
nxt[addr]=unused; //์ฝ์
ํ ์์น์ ๋ค์๊ฐ์ด ๋ด๊ฐ ์๋ก ์์ฑํ ์์์ ์์น
unused++;
}
๋งจ ๋ง์ง๋ง ์์์ ๋ค์ ์ ์์๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ, ์ฝ์ ํ ์์น์ ๋ค์ ์์๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ if๋ฌธ ์ฌ์ฉ!
erase ํจ์
1. ์ด์ ์์น์ nxt๋ฅผ ์ญ์ ํ ์์น์ nxt๋ก ๋ณ๊ฒฝ
2. ๋ค์ ์์น์ pre๋ฅผ ์ญ์ ํ ์์น์ pre๋ก ๋ณ๊ฒฝ
void erase(int addr){
nxt[pre[addr]]=nxt[addr];
if(nxt[addr]!=-1) pre[nxt[addr]]=pre[addr];
}
dummy node์ ์กด์ฌ๋ก ์ธํด ๊ทธ ์ด๋ค ์์๋ฅผ ์ง์ฐ๋๋ผ๋ pre[addr]๋ -1์ด ์๋์ด ๋ณด์ฅ๋์ง๋ง,
๋ง์ง๋ง ์์๋ฅผ ์ง์ฐ๋ฉด ๋ค์๊บผ๊ฐ ์์ ์ ์๊ธฐ ๋๋ฌธ์ if๋ฌธ ๋ถ์ฌ์ฃผ๊ธฐ!
'DEV_IN > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฃ๊ตฌ์กฐ/๊ทธ๋ํ/BFS (0) | 2023.03.21 |
---|---|
[์๋ฃ๊ตฌ์กฐ/์ ํ๊ตฌ์กฐ] ๋ฑ (0) | 2023.03.09 |
[์๋ฃ๊ตฌ์กฐ/์ ํ๊ตฌ์กฐ] ๋ฐฐ์ด (0) | 2023.03.08 |
[์๊ณ ๋ฆฌ์ฆ ์ ํ] Greedy Algorithm (2) | 2023.03.07 |
์๊ณ ๋ฆฌ์ฆ/๊ณต๊ฐ ๋ณต์ก๋ (2) | 2023.02.24 |
Comments