Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL - Codesquad] ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ• ๋ณธ๋ฌธ

TIL

[TIL - Codesquad] ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•

๋น„๋น„ bibi 2021. 1. 12. 23:52

[20.01.12]

์˜ค๋Š˜์€ ๋ฏธ์…˜ ์ œ์ถœํ•˜๋Š๋ผ ์ฝ”๋”ฉ์„ ๋งŽ์ด ํ•ด์„œ ๊ณต๋ถ€๋Š” ๋งŽ์ด ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

๊ทธ๋ฃน์›๋“ค์ด ์ถ”์ฒœํ•œ ๋น…์˜คํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ์˜์ƒ์„ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. 


TIL

๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•

 www.youtube.com/watch?v=6Iq5iMCVsXA&feature=youtu.be

 

๋ณต์žก๋„ Complexity ๋ถ„์„

- ์„ฑ๋Šฅ ์ธก์ •์„ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜.
- ๊ณต๊ฐ„๋ณต์žก๋„์™€ ์‹œ๊ฐ„๋ณต์žก๋„ ๋ถ„์„์„ ๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ.

๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ• Big-O notation

- ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•ด ์ฃผ๋Š” ํ‘œ๊ธฐ๋ฒ•.
- ๋น…์˜คํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹ค์ œ running time์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ธฐ๋ณด๋‹ค, 
๋ฐ์ดํ„ฐ / ์‚ฌ์šฉ์ž์˜ ์ฆ๊ฐ€์œจ์— ๋”ฐ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž„. 
( -> Drop Constant : ์ƒ์ˆ˜์™€ ๊ฐ™์€ ์ˆซ์ž๋“ค์€ ๋ชจ๋‘ 1์ด ๋จ - ๋งจ ๋์—์„œ ๋‹ค์‹œ ์„ค๋ช…. )


์•„๋ž˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ์˜ˆ์‹œ๋“ค์ด๋‹ค.

1. O(1) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : constant time ์ƒ์ˆ˜ ์‹œ๊ฐ„

: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ์–ธ์ œ๋‚˜ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

O(1)์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ์ฝ”๋“œ

int function(int[] numArr) {
  return (numArr[0] == 0) ? true : false;
}
-> ๋งค๊ฐœ๋ณ€์ˆ˜์ธ numArr์ด ์•„๋ฌด๋ฆฌ ์ปค๋„ ์ผ์ •ํ•œ ์†๋„๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•จ.

O(1)์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„

(x์ถ• : ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ data, y์ถ• : ์ฒ˜๋ฆฌ์‹œ๊ฐ„ time)

: ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ์ฆ๊ฐ€ํ•ด๋„ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ์ผ์ •ํ•˜๋‹ค. ์ฆ‰, ์„ฑ๋Šฅ์— ๋ณ€ํ•จ์ด ์—†๋‹ค.

 

2. O(n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : liner time (์„ ํ˜• ์‹œ๊ฐ„)

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

O(n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ์ฝ”๋“œ 

void function(int[] numArr) {
  for (int i = 0; i < numArr.length; i++ {
    System.out.println(i);
  }
}
-> numArr ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ n์ด๋ผ๋ฉด for๋ฌธ๋„ n๋ฒˆ์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. 
n์ด ํ•˜๋‚˜ ์ปค์งˆ ๋–„๋งˆ๋‹ค for๋ฌธ์˜ ๋ฐ˜๋ณตํšŸ์ˆ˜๋„ n๋ฒˆ ์ฆ๊ฐ€ํ•œ๋‹ค.
์ฆ‰, n์˜ ์ฆ๊ฐ€์œจ๋งŒํผ ์ฒ˜๋ฆฌ์‹œ๊ฐ„๋„ ์ฆ๊ฐ€ํ•œ๋‹ค.

O(n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„

: ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ์‹œ๊ฐ„๋„ ๋น„๋ก€ํ•ด์„œ ์ฆ๊ฐ€ํ•œ๋‹ค.
( ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€์œจ = ์ฒ˜๋ฆฌ์‹œ๊ฐ„ ์ฆ๊ฐ€์œจ -> ๊ทธ๋ž˜ํ”„๋Š” ์–ธ์ œ๋‚˜ ์ง์„ ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค)

 

3. O(n^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : (์˜ค ์—” ์Šคํ€˜์–ด)

O(n^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ์ฝ”๋“œ

void function(int[] n) {
  for (int i = 0; i < n.length; i++) {
    for (int j = 0; j < n.length; j++) {
      System.out.println(i + j);
    } 
  }
}
-> ์œ„์™€ ๊ฐ™์€ ์ด์ค‘๋ฃจํ”„ ์ฝ”๋“œ์ผ ๋•Œ O(n^2)์ด ๋œ๋‹ค.


n๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ , ๊ฐ ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ๋„ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฏ€๋กœ
์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜๋Š” ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ n^2 ํšŒ๊ฐ€ ๋œ๋‹ค.
๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ์‹œ๊ฐ„์˜ ๋ถ€๋‹ด์ด ์ปค์ง„๋‹ค.

O(n^2) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„

-> ์ฒ˜์Œ์—๋Š” ์กฐ๊ธˆ์”ฉ ์ƒ์Šนํ•˜๋‹ค๊ฐ€, ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ์ œ๊ณฑ์œผ๋กœ ์ฆ๊ฐ€ํ•ด ๊ทธ๋ž˜ํ”„๊ฐ€ ์ˆ˜์ง์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค. (๊ณก์„ ํ˜•)

 

4. O(nm) ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์˜ค ์—” ์— )

O(nm) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ์ฝ”๋“œ

void function(int[] n, int[] m) {
  for (int i = 0; i < n.length; i++) {
    for (int j = 0; j < m.length; j++) {
      System.out.println( i + j );
    }
  }
}
-> ๊ฐ™์€ ์ด์ค‘๋ฃจํ”„๋ฌธ์ด๋ผ O(n^2)์™€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ,
numArr1์„ ๋‘ ๋ฒˆ ๋Œ๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ numArr1์„ numArr2๋งŒํผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. (ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๊ฒŒ ์ฃผ์˜)

-> n์„ m๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ n*m์ด ๋œ๋‹ค.
n์€ ์•„์ฃผ ํฐ ์ˆ˜, m์€ ์ž‘์€ ์ˆ˜ ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

O(nm)์˜ ๊ทธ๋ž˜ํ”„

-> O(n^2)์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ˆ˜๋ก ๊ทธ๋ž˜ํ”„๊ฐ€ ์ˆ˜์ง์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค (๊ณก์„ ํ˜•).

 

5. O(n^3) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : polynomial time / cubic time (๋‹คํ•ญ ์‹œ๊ฐ„)

O(n^3) ์˜ˆ์‹œ ์ฝ”๋“œ

void function(int[] n) {
  for (int i = 0; i < n.length; i++) {
    for (int j = 0; j < n.length; j++) {
      for (int k = 0; < k.length; k++) {
        System.out.println(i + j + k);
      } 
    }
  }
}
-> ์‚ผ์ค‘๋ฃจํ”„๋ฌธ. n์„ ์„ธ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ๋Œ๋ฆฐ ๊ฒฝ์šฐ n์˜ ์„ธ์ œ๊ณฑ์ด ๋œ๋‹ค.

-> O(n)์€ ์ง์„ , O(n^2)๋Š” ๋ฉด์ , O(n^3)์€ ๋ถ€ํ”ผ = ํ๋ธŒ ๊ฐ€ ๋œ๋‹ค.

O(n^3) ๊ทธ๋ž˜ํ”„

-> O(n^2)์™€ ๋น„์Šทํ•œ ๊ณก์„ ํ˜•์ด์ง€๋งŒ, ์„ธ์ œ๊ณฑ์ด๋ฏ€๋กœ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋” ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ˆ˜์ง์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค (๊ณก์„ ํ˜•).
๋ฐ์ดํ„ฐ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๋”์šฑ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค.

 

6. O(2^n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : exponential time ์ง€์ˆ˜ ์‹œ๊ฐ„

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด - 1๋ถ€์ฒ˜ ์‹œ์ž‘ํ•ด ํ•œ ๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค์–ด ๋ถ™์ธ๋‹ค. ๊ทธ ๋‹ค์Œ ๊ธด ๋ฉด ๊ธฐ์ค€์œผ๋กœ ์ •์‚ฌ๊ฐํ˜•์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ™์ธ๋‹ค. ๋ฐ˜๋ณตํ•œ๋‹ค. (1 - 1 - 2 - 3 - 5 - 8 ...)

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด.
์•ž์˜ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ๋”ํ•ด ๋’ค์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค.
1, 1, 2, 3, 5, 8..

O(2^n) ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜ˆ์‹œ ์ฝ”๋“œ

์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•ด ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ O(2^n)์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•ด๋‹นํ•œ๋‹ค.
-> ์ด์ „ ์ˆซ์ž์™€ ์ „์ „ ์ˆซ์ž๋ฅผ ์•Œ์•„์•ผ ๋‘˜์„ ๋”ํ•ด ๋‹ค์Œ ์ˆซ์ž๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋งค๋ฒˆ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋‘ ๋ฒˆ์”ฉ ๋” ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค.

-> ๋งค๋ฒˆ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ๋‹ค ๋‘ ๋ฒˆ์”ฉ ๋” ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์„ ํŠธ๋ฆฌ์˜ ๋†’์ด (k) ๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค.

O(2^n) ๊ทธ๋ž˜ํ”„

-> O(n^2), O(n^3)๋ณด๋‹ค๋„ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ˆ˜์ง์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค(๊ณก์„ ํ˜•).
๋ฐ์ดํ„ฐ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋Š˜์–ด๋‚œ๋‹ค.

 

6-1. O(m^n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ง€์ˆ˜ ์‹œ๊ฐ„

์œ„์˜ O(2^n)์•Œ๊ณ ๋ฆฌ์ฆ˜์ด 2๊ฐœ์”ฉ n๋ฒˆ ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ,
O(m^n)์€ m๊ฐœ์”ฉ n๋ฒˆ ๋Š˜์–ด๋‚˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

7. O(log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ 

O(log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ์ฝ”๋“œ

- ์ด์ง„๊ฒ€์ƒ‰ binary search ์ฝ”๋“œ๊ฐ€ O(log n)์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Œ€ํ‘œ์ ์ธ ์ฝ”๋“œ์ด๋‹ค.
๋งค๋ฒˆ ์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„๊ฐ’๋ณด๋‹ค ํฐ์ง€/์ž‘์€์ง€ ๋น„๊ตํ•˜์—ฌ ๊ฒ€์ƒ‰๋Œ€์ƒ์„ ์ค„์—ฌ๋‚˜๊ฐ.
-> ํ•œ ๋ฒˆ ์ฒ˜๋ฆฌ๊ฐ€ ์ง„ํ–‰๋  ๋•Œ ๋งˆ๋‹ค ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ˆ๋ฐ˜์”ฉ ์ค„์–ด๋“ฆ -  O(log n)์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•จ.

O(log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„

-> ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ฐจ์ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

 

8. O(sqrt(n)) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์˜ค ์Šคํ€˜์–ด ๋ฃจํŠธ n

sqare root = ์Šคํ€˜์–ด ๋ฃจํŠธ = ์ œ๊ณฑ๊ทผ.

3 * 3 = 9 ์ด๋ฏ€๋กœ 9์˜ ์ œ๊ณฑ๊ทผ์€ 3์ด ๋œ๋‹ค.

 

์–ด๋–ค ์ˆ˜ n์„ ์ •์‚ฌ๊ฐํ˜• ์†์— ์ฑ„์šฐ๋ฉด, ๊ทธ ์ •์‚ฌ๊ฐํ˜•์˜ ํ•œ ๋ณ€์ด ์ œ๊ณฑ๊ทผ์ด ๋œ๋‹ค.

 

Drop Constants ์ƒ์ˆ˜ ๋ฒ„๋ฆผ (์ƒ์ˆ˜ ๋ฌด์‹œ)

- ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—์„œ ๊ผญ ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฐœ๋….
- ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—์„œ ์ƒ์ˆ˜๋Š” ๊ณผ๊ฐํ•˜๊ฒŒ ๋ฒ„๋ฆฐ๋‹ค. ์ฆ‰, ์–ด๋–ค ์ƒ์ˆ˜๋Š” 1๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด,

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

1๋ฒˆ ์ฝ”๋“œ๋ธ”๋Ÿญ์€ n์„ ๋‘ ๋ฒˆ ๋Œ๋ฆฌ๋‹ˆ๊นŒ ์‹ค์ œ๋กœ๋Š” O(2n)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
2๋ฒˆ ์ฝ”๋“œ๋ธ”๋Ÿญ์€ ์ด์ค‘๋ฃจํ”„๋ฅผ ๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ ์‹ค์ œ๋กœ๋Š” O(n^2+n^2) = O(2n^2)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
ํ•˜์ง€๋งŒ ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ 2๋ผ๋Š” ์ƒ์ˆ˜๋ฅผ ์—†์• ๋ฒ„๋ฆฌ๊ณ , ๊ฐ๊ฐ O(n), O(n^2)๋ผ๊ณ ๋งŒ ํ‘œ์‹œํ•œ๋‹ค.

Why? ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์‹ค์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ running time(์‹คํ–‰์‹œ๊ฐ„)์„ ์žฌ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
์žฅ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€์œจ์„ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ํ‘œ๊ธฐ๋ฒ•์ด๊ธฐ ๋–„๋ฌธ.

์ƒ์ˆ˜๋Š” ๊ณ ์ •๋œ ์ˆซ์ž์ด๋ฏ€๋กœ, ์ฆ๊ฐ€์œจ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๋•Œ๋„ ๊ณ ์ •๋œ ์ƒ์ˆ˜๋งŒํผ๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.
๋น…์˜คํ‘œ๊ธฐ๋ฒ•์€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์ˆซ์ž (๊ณ ์ •๋œ ์ˆซ์ž=์ƒ์ˆ˜)๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ.

 


** ๋‚ด์ผ ํ•  ์ผ **

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฏธ์…˜์„ ์—ด์‹ฌํžˆ ํ’€๊ณ  ์ œ์ถœํ•˜๊ธฐ.

๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์„ ํ˜• ๋ฆฌ์ŠคํŠธ, ํ™˜ํ˜• ๋ฆฌ์ŠคํŠธ์˜ ํŠน์„ฑ๊ณผ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ.

Big-O ํ‘œ๊ธฐ๋ฒ•๊ณผ ๊ฐ™์€ ๋ณต์žก๋„ ๋ถ„์„ ํ•™์Šตํ•˜๊ณ  ์ •๋ฆฌํ•œ๋‹ค. *

Queue์™€ Deque์— ๋Œ€ํ•ด ํ•™์Šต ๋ฐ ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋ฐฉ์•ˆ ์„ค๊ณ„.

+ ํ˜ธ๋ˆ…์Šค๊ฐ€ ์ถ”์ฒœํ•ด ์ค€ ๋งˆํฌ๋‹ค์šด ํˆด Typora๋ฅผ ํ™œ์šฉํ•ด์„œ TIL์„ ์ ์–ด๋ณด์ž! ๋งˆํฌ๋‹ค์šด ์–ธ์–ด์— ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•œ๋‹ค.