๊ฐœ๋… : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋–จ์–ด์ ธ ์žˆ๋Š” ๋…ธ๋“œ๋“ค์ด ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์—ฐ๊ฒฐ๋˜๋Š” ํ˜•ํƒœ
vs ๋ฐฐ์—ด : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ•œ๊ณต๊ฐ„์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ• ๋‹น ๋˜์–ด ์žˆ์Œ.
๋‹จ์  : ๋…ธ๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๋”ฐ๋ผ ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ์†๋„๊ฐ€ ๋А๋ฆด ์ˆ˜ ์žˆ์Œ
์žฅ์  : ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ• ๋•Œ ํ•œ๋ถ€๋ถ„๋งŒ ๊ฐ€์ง„ ์ฃผ์†Œ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๊ฐ„๋‹จ
vs ๋ฐฐ์—ด : ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด ์ „์ฒด์˜ ๊ณต๊ฐ„์„ ๋‹ค์‹œ ํ• ๋‹น ํ•ด์•ผํ•˜๊ธฐ ๋–„๋ฌธ์— ๋ณต์žก
=> ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋“ค, ์ถ”๊ฐ€ ์‚ญ์ œ๊ฐ€ ์žฆ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ๋•Œ ์šฉ์ดํ•˜๋‹ค.

๋‹จ๋ฐฉํ–ฅ/์–‘๋ฐฉํ–ฅ Linked List

๋‹จ๋ฐฉํ–ฅ : ๊ฐ ๋…ธ๋“œ์— ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ์žˆ์–ด์„œ ์ด์ „ ๋…ธ๋“œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๊ณ  ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” Linked List

⇒ ๊ฒ€์ƒ‰ ์‹œ์— ๊ฐ€์žฅ ์•ž์˜ ๋…ธ๋“œ๋ถ€ํ„ฐ ํ•œ๊ฐœ์˜ ๋…ธ๋“œ ์”ฉ ์ด๋™ํ•˜๋ฉด์„œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•จ.

์–‘๋ฐฉํ–ฅ : ๊ฐ ๋…ธ๋“œ์˜ ์ „ํ›„ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Linked List

⇒ ๊ฐ€์žฅ ๋์— ๋…ธ๋“œ๋ฅผ ์‚ฝ์ผ ํ•  ๋•Œ ์ œ์ผ ์•ž์˜ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฐพ์•„๊ฐ€์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

๋‹จ๋ฐฉํ–ฅ Linked List๋Š” ์ฒซ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋งŒ์„ ์ €์žฅํ•˜๊ณ  ์–‘๋ฐฉํ–ฅ Linked List๋Š” ์ฒ˜์Œ๊ณผ ๋ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

๊ณต๊ฐ„์˜ ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ํ•„์š”ํ•œ ํ˜•ํƒœ๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

๋ฐ˜์‘ํ˜•

Big O (๋น…์˜ค)

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œ๊ธฐํ•œ ๊ฒƒ

ํŠน์ง•

  • Big-Oํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„·๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Big-O ํ‘œ๊ธฐ๋ฒ•์€ ์‹ค์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ˆ˜ํ–‰๋˜๋Š” Running Time์„ ํ‘œ๊ธฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜๋Š” ๋ฌด์‹œ๋œ๋‹ค.

ํ‘œ๊ธฐ ์ข…๋ฅ˜

1) O(1)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๊ด€๊ณ„ ์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ.

ex)

Example (int[] n) {
    return (n[0] == 0)? true:false;
}

2) O(n)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) ๋‹จ์ผ for๋ฌธ

Example (int[] n) {
    for(int i = 0; i < n.length; i++){
        System.out.print(i);
    }
}

3) O(n²)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) ์ด์ค‘ for๋ฌธ

Example (int[] n) {
    for(int i = 0; i < n.length; i++){
            for(int j = 0; j < n.length; j++){
                System.out.print(i+j);
            }
    }
}

3-1) O(nm)

: ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด, ๊ฐ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ํ‘œ๊ธฐํ•ด์ค˜์•ผ ํ•จ.

Example (int[] n, int[] m) {
    for(int i = 0; i < n.length; i++){
            for(int j = 0; j < m.length; j++){
                System.out.print(i+j);
            }
    }
}

 

4) O(n³)

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์˜ ์„ธ์ œ๊ณฑ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) ์‚ผ์ค‘ for๋ฌธ

Example (int[] n) {
    for(int i = 0; i < n.length; i++){
            for(int j = 0; j < n.length; j++){
                for(int k = 0; k < n.length; k++){
                    System.out.print(i + j + k);
                }
            }
    }
}

 

5) O(2โฟ) ๋˜๋Š” O(mโฟ)

: ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ํ˜„์ €ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ex) Fibonacci Numbers (ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด)

Example (int n, int[] r) {
    if (n <= 0) return 0;
    else if (n == 1) return r[n] = 1;
    return r[n] = Example(n-1, r) + Example(n-2, r);
}

5) O(log n)

: ์—ฐ์‚ฐ์„ ๊ฑฐ๋“ญํ•  ๋•Œ ๋งˆ๋‹ค ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ค„์–ด๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๋ฐ์ดํ„ฐ ์–‘์˜ ์ฆ๊ฐ€์— ๋น„ํ•ด ์†Œ์š” ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€ ํญ์ด ํฌ์ง€ ์•Š์Œ.

ex) binary search (์ด์ง„ ํƒ์ƒ‰)

Example(int key, int[] arr, start, end){
    if(start > end) return -1;
    int m = (start + end) / 2l
    if (arr[m] == k) return m;
        else if(arr[m] > key) return Example(key, arr, start, m-1);
        else return Example(key, arr, m+1, end);
}

6) O(sqrt(n))

: n²๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘ n๊ฐœ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ๋งŒ ์—ฐ์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Big O ๊ทธ๋ž˜ํ”„ ๋น„๊ต

๋ฐ˜์‘ํ˜•

'Backgrounds > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ | Linked List  (0) 2023.08.01

+ Recent posts