let's get IT with DAVINA ๐Ÿ’ป

[์ž๋ฃŒ๊ตฌ์กฐ/์„ ํ˜•๊ตฌ์กฐ] ๋ฐฐ์—ด ๋ณธ๋ฌธ

DEV_IN/Algorithm

[์ž๋ฃŒ๊ตฌ์กฐ/์„ ํ˜•๊ตฌ์กฐ] ๋ฐฐ์—ด

๋‹ค๋นˆ์น˜์ฝ”๋“œ๐Ÿ’Ž 2023. 3. 8. 02:06

๋ฐฐ์—ด

  • ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์›์†Œ๋ฅผ ์—ฐ์†ํ•˜๊ฒŒ ๋ฐฐ์น˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

๋ฐฐ์—ด์˜ ์„ฑ์งˆ

  1. O(1)์— k๋ฒˆ์งธ ์›์†Œ๋ฅผ ํ™•์ธ/๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  2. ์ถ”๊ฐ€์ ์œผ๋กœ ์†Œ๋ชจ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘(=overhead)๊ฐ€ ๊ฑฐ์˜ ์—†์Œ
  3. Cache hit rate๊ฐ€ ๋†’์Œ
    • cache hit rate: ์บ์‹œ๊ฐ€ ์ ์ค‘๋˜๋Š” ์ •๋„
  4. ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†ํ•œ ๊ตฌ๊ฐ„์„ ์žก์•„์•ผ ํ•ด์„œ ํ• ๋‹น์— ์ œ์•ฝ์ด ๊ฑธ๋ฆผ

๊ธฐ๋Šฅ๊ณผ ๊ตฌํ˜„

  • ์ž„์˜์˜ ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๋ฅผ ํ™•์ธ/๋ณ€๊ฒฝ → O(1)
  • ์›์†Œ๋ฅผ ๋์— ์ถ”๊ฐ€ → O(1)
  • ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐ → O(1)
  • ์ž„์˜์˜ ์œ„์น˜์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€/์ œ๊ฑฐ → O(N)
    • ex) ๋งˆ์น˜ ์ฑ…์žฅ์— ์ฑ…์ด ์—ฐ์†ํ•ด์„œ ๊ฝ‚ํ˜€์žˆ์„ ๋•Œ ์ค‘๊ฐ„์— ์ฑ…์„ ๋„ฃ๊ธฐ ์œ„ํ•ด์„  ๋‚˜๋จธ์ง€ ์ฑ…๋“ค์„ ๋ฐ€์–ด์•ผํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ

insert ํ•จ์ˆ˜

5๋ฒˆ์งธ idx์— 15๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด (๊ธธ์ด1์ถ”๊ฐ€) ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ๋•ก๊ฒจ์˜ค๊ณ  ๋นˆ์นธ์— 15๋ฅผ ๋„ฃ์–ด์ฃผ์ž

void insert(int idx, int num, int arr[], int&len){
	for(let i=len; i>idx; i--) 
    	arr[i]=arr[i-1];
        arr[idx]=num;
        len++
}

erase ํ•จ์ˆ˜

2๋ฒˆ์งธ idx์— 6์„ ์ง€์šฐ๊ณ  ์‹ถ์œผ๋ฉด, ๊ทธ๋ƒฅ 2๋ฒˆ์งธ๋ถ€ํ„ฐ ๋•ก๊ฒจ์˜ค๋ฉด ๋œ๋‹ค. ๊ธธ์ด๋Š” -1

void erase(int idx, int arr[], int&len){
	len--;
    for(int i=idx; i<len; i++)
    arr[i]=arr[i+1];
}
Comments