Post

๐Ÿค ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• ์ •๋ฆฌ

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

7) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• ์ •๋ฆฌ

  • ๋น…์˜ค(Big-O)

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

    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„, ๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹ค์ œ running time์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ์‚ฌ์šฉ์ž์˜ ์ฆ๊ฐ€์œจ์— ๋”ฐ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜์™€ ๊ฐ™์€ ์ˆซ์ž๋“ค์€ ๋ชจ๋‘ 1์ด๋œ๋‹ค.

  • O(1) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    1
    2
    3
    
      public boolean F(int[] n) {
          return (n[0] == 0) ? true : false;
      }
    
    • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์ƒ๊ด€ ์—†์ด ์–ธ์ œ๋‚˜ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.

    • ํ•จ์ˆ˜๋ฅผ ๋ณด๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด ๋ฐฉ์˜ ๊ฐ’์ด 0์ธ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ์ธ์ž๋กœ ๋ฐ›๋Š” ๋ฐฐ์—ด ๋ฐฉ์˜ ๊ฐ’์ด ์–ผ๋งˆ๋‚˜ ํฐ์ง€ ์ƒ๊ด€ ์—†์ด ์–ธ์ œ๋‚˜ ์ผ์ •ํ•œ ์†๋„๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    1

    • ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€๋กœ์ถ•์ด ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์ด๊ณ  ์„ธ๋กœ์ถ•์„ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด๋ผ๊ณ  ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์˜ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.


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

    1
    2
    3
    4
    5
    
      public void F(int[] n) {
          for (int i = 0; i < n.length; i++) {
              System.out.println(i);
          }
      }
    
    • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ.

    • ํ•จ์ˆ˜๋Š” n๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด n๋ฒˆ ๋ฃจํ”„๋ฅผ ๋„๋‹ˆ๊นŒ n์ด ํ•œ๋ฒˆ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ์ฒ˜๋ฆฌ๊ฐ€ ํ•œ๋ฒˆ ์”ฉ ๋Š˜์–ด๋‚˜์„œ n์˜ ํฌ๊ธฐ๋งŒํผ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

    1

    • ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๋น„๋ก€ํ•ด์„œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„๋„ ๊ฐ™์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

    • ์–ธ์ œ๋‚˜ ๋ฐ์ดํ„ฐ์™€ ์‹œ๊ฐ„์ด ๊ฐ™์€ ๋น„์œจ๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ž˜ํ”„๋Š” ์ง์„ ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค.

  • O(nยฒ) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    1
    2
    3
    4
    5
    6
    7
    
      public void F(int[] n) {
          for (int i = 0; i < n.length; i++) {
              for (int j = 0; j < n.length; j++) {
                  System.out.println(i + j);
              }
          }
      }
    
    • n์„ ๋Œ๋ฆฌ๋ฉด์„œ ๊ทธ ์•ˆ์—์„œ n์œผ๋กœ ๋ฃจํ”„๋ฅผ ๋˜ ๋Œ๋ฆด ๋•Œ, nยฒ์ด ๋œ๋‹ค.

    • ๊ทธ๋ž˜์„œ n๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฃจํ”„์—์„œ n๋ฒˆ ๋Œ๋ฉด์„œ ๊ฐ๊ฐ์˜ element์—์„œ n๋ฒˆ์”ฉ ๋˜ ๋„๋‹ˆ๊นŒ ์ฒ˜๋ฆฌ ํšŸ์ˆ˜๊ฐ€ n์„ ๊ฐ€๋กœ ์„ธ๋กœ ๊ธธ์ด๋กœ ๊ฐ€์ง€๋Š” ๋ฉด์ ๋งŒํผ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

    1

    • ๋”ฐ๋ผ์„œ n์ด ํ•œ ๋ฒˆ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ์•„๋ž˜ ํ•œ ์ค„, ์˜ค๋ฅธ์ชฝ ํ•œ ์ค„(ํ–‰, ์—ด) n๋งŒํผ์”ฉ ๋˜ ๋ถ™์œผ๋‹ˆ๊นŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์— ๋ถ€๋‹ด๋„ ์ปค์ง„๋‹ค.

    1

    • ์ฒ˜์Œ์—๋Š” ์กฐ๊ธˆ์”ฉ ์ƒ์Šนํ•˜๋‹ค๊ฐ€ ๋‚˜์ค‘์—๋Š” ์ˆ˜์ง ์ƒ์Šน๋œ๋‹ค.


  • O(nm) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    1
    2
    3
    4
    5
    6
    7
    
      public void F(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);
              }
          }
      }
    
    • n์„ ๋‘ ๋ฒˆ ๋Œ๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ n์„ m๋งŒํผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

    1

    • n์€ ์—„์ฒญ ํฌ๊ณ  m์€ ์—„์ฒญ ์ž‘์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—๋„ ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฅผ ํ•ด์•ผ๋œ๋‹ค!

    • ๊ทธ๋ž˜ํ”„๋Š” O(nยฒ)์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜๋ก ์ˆ˜์ง์— ๊ฐ€๊นŒ์šด ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋œ๋‹ค.


  • O(nยณ) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      public void F(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.println(i + j + k);
                  }
              }
          }
      }
    
    • ๋ฃจํ”„๋ฅผ n์„ ๊ฐ€์ง€๊ณ  3์ค‘์œผ๋กœ ๋Œ๋ฆฌ๋ฉด nยณ์ด ๋œ๋‹ค.

    1

    1

    • ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ๊ฐ€๋กœ, ์„ธ๋กœ, ๋†’์ด๊นŒ์ง€ ๋Š˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ž˜๋„ O(nยฒ)๋ณด๋‹ค ๋” ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ˆ˜์ง ์ƒ์Šนํ•˜๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ๋œ๋‹ค.


  • O(2โฟ) ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

    1

    • ํ•œ ๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ ๋‹ค. ์ฒ˜์Œ์€ 1์ผ ๊ฒƒ. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ํ›„์— 1์ด 2๊ฐœ๊ฐ€ ๋ถ™์–ด์„œ ์ง์‚ฌ๊ฐํ˜•์ด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ€๋กœ๊ฐ€ 2์ผ ๊ฒƒ์ด๊ณ  ๊ทธ๊ฑธ ๊ธฐ์ค€์œผ๋กœ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ ๋‹ค.

    • ๊ทธ๋Ÿฌ๋ฉด ๋Š˜์–ด๋‚œ ๋ฉด์ด 3์ด ๋œ๋‹ค. ๋˜ ์ด ๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋œ ํ•œ ๋ฉด์ด 5๊ฐ€ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ๋ฉด์„ ๊ธฐ์ค€์œผ๋กœ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 8์ด ๋˜๊ณ  .. 1 -> 2 -> 3 -> 5 ->8 -> 13 -> 21 -> 34 -> 55 ์ด๋Ÿฐ์‹์œผ๋กœ ๊ธฐํ•˜ํ•™์˜ ํ™ฉ๊ธˆ๋น„์œจ์ธ ํ”ผ๋ณด๋‚˜์น˜์˜ ๋‚˜์„ ํ˜•์ด ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋œ๋‹ค.

    • ์ˆ˜ํ•™์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด 1-> 1-> 2-> 3 -> 5 -> 8 -> 13 -> 21 -> 34 -> 55 ์ด ๋ถ€๋ถ„์€

    • 1์„ ๋‘ ๋ฒˆ ๋”ํ•ด์„œ 2๊ฐ€ ๋˜๊ณ  1+2 = 3, 3+5 = 8, 3+5 = 8 ยทยทยท 21+34 = 55๊ฐ€ ๋œ๋‹ค.

    • ํ”ผ๋…ธ์ฐจ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ’€๋ฉด

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
      public int F(int n, int[] r) {
          if (n <= 0) {
              return 0;
          } else if (n == 1) {
              r[n] = 1;
              return r[n];
          }
          r[n] = F(n - 1, r) + F(n - 2, r);
          return r[n];
      }
    
    • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ”๋กœ ์ „์˜ ์ˆซ์ž์™€ ์ „์ „ ์ˆซ์ž๋ฅผ ์•Œ์•„์•ผ ๋”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ ํ•˜๋‚˜ ๋บ€ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žฌ๊ท€ํ˜ธ์ถœ์„ ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ๋‘ ๋ฒˆ ๋บ€ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žฌ๊ท€ํ˜ธ์ถœ์„ ํ•œ๋‹ค.

    1

    • ์ด๋ ‡๊ฒŒ ๋งค๋ฒˆ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค 2๋ฒˆ์”ฉ ๋˜ ํ˜ธ์ถœ์„ ํ•˜๋Š”๋ฐ ๊ทธ๊ฑธ ํŠธ๋ฆฌ์˜ ๋†’์ด๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    1

  • ๊ทธ๋ž˜ํ”„๋กœ ๋ณด๋ฉด ๋ฐ์ดํ„ฐ์˜ ์ฆ๊ฐ€๋Ÿ‰์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์•ž์„œ ์‚ดํŽด๋ณธ O(nยฒ)์ด๋‚˜ O(nยณ)๋ณด๋‹ค ํ›จ์”ฌ ์ˆ˜์ง ์ƒ์Šน๋˜์–ด์žˆ๋‹ค.


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

    • ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด์ง„ ๊ฒ€์ƒ‰(์ด์ง„ ํƒ์ƒ‰)์ด๋‹ค.

    1

    • ์ด์ง„ ๊ฒ€์ƒ‰์„ ํ•˜๋ ค๋ฉด ์šฐ์„  ๊ฐ€์šด๋ฐ ๊ฐ’์„ ์ฐพ์•„์„œ key๊ฐ’(์ง€๊ธˆ ๊ตฌํ•˜๋ ค๋Š” ์ˆ˜)๊ณผ ๋น„๊ต๋ฅผ ํ•œ๋‹ค.

    • 2<7์ด๋ฏ€๋กœ ๋’ท ๋ถ€๋ถ„์€ ๋ฒ„๋ฆฌ๊ณ  ์•ž ๋ถ€๋ถ„๋งŒ ํƒ์ƒ‰ํ•œ๋‹ค.

    • ๊ฐ€์šด๋ฐ ๊ฐ’์ด 3์„ ๊ฐ€์ง€๊ณ  ๋น„๊ตํ•œ๋‹ค. 2<3 ์ด๋ฏ€๋กœ ์•ž ๋ถ€๋ถ„๋งŒ ๋‹ค์‹œ ํƒ์ƒ‰ํ•œ๋‹ค.

    • 2>1 ์ด๋ฏ€๋กœ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๊ณ  ๋” ์ด์ƒ ๋‚จ์€ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฏ€๋กœ ํƒ์ƒ‰ ์‹คํŒจ.

    • ์ด๋ ‡๊ฒŒ ํ•œ ๋ฒˆ ์ฒ˜๋ฆฌ๊ฐ€ ์ง„ํ–‰๋  ๋•Œ๋งˆ๋‹ค ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ˆ๋ฐ˜์”ฉ ๋š ๋š ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ O(log n) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•œ๋‹ค.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
      public int F(int k, int[] arr, int s, int e) {
          if (s > e) {
              return -1;
          }
        
          int m = (s + e) / 2;
        
          if (arr[m] == k) {
              return m;
          } else if (arr[m] > k) {
              return F(k, arr, s, m - 1);
          } else {
              return F(k, arr, m + 1, e);
          }
      }
    
    
    • ์ฒ˜์Œ ํ˜ธ์ถœ ๋  ๋•Œ๋Š” ์‹œ์ž‘ ๋ถ€๋ถ„์€ 0, ๋ ์ ์€ ๋ฐฐ์—ด์˜ ๋งจ ๋งˆ์ง€๋ง‰ ๋ฐฉ์ด ๋œ๋‹ค.

    • int m = (s + e) / 2; ์ฃผ์–ด์ง„ range์— ์ค‘๊ฐ„๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

    • ์ฐพ๋Š” ๊ฐ’์ด ์ค‘๊ฐ„ ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ค‘๊ฐ„ ์ง€์  ๋ฐ”๋กœ ์ „ ๊นŒ์ง€ range๋ฅผ ์กฐ์ •ํ•ด์„œ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๊ณ  ์ค‘๊ฐ„ ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์ค‘๊ฐ„ ์ง€์  ๋‹ค์Œ ๋ฐฉ๋ถ€ํ„ฐ range๋ฅผ ์กฐ์ •ํ•ด์„œ ๋‹ค์‹œ ํ˜ธ์ถœํ•œ๋‹ค.

    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•œ ๋ฒˆ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ค‘๊ฐ’๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ ˆ๋ฐ˜์€ ๊ฒ€์ƒ‰ ์˜์—ญ์—์„œ ์ œ์™ธ์‹œ์ผœ ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์ฐจ ๊ฒ€์ƒ‰์— ๋น„๊ตํ•ด์„œ ์†๋„๊ฐ€ ํ˜„์ €ํ•˜๊ฒŒ ๋น ๋ฅด๋‹ค.

    1

  • O(log n)์ด O(n)๋ณด๋‹ค๋„ ํ›จ์”ฌ ์ ๊ฒŒ ๋“ ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ฐจ์ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.


  • ๐Ÿ“Œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„

    • ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—์„œ ์ƒ์ˆ˜๋Š” ๊ณผ๊ฐํ•˜๊ฒŒ ๋ฒ„๋ฆฐ๋‹ค!
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      public void F(int[] n) {
      // ์ฒซ ๋ฒˆ์งธ for ๋ฃจํ”„
          for (int i = 0; i < n.length; i++) {
              System.out.println(i);
          }
        
      // ๋‘ ๋ฒˆ์งธ for ๋ฃจํ”„
          for (int i = 0; i < n.length; i++) {
              System.out.println(i);
              }
          }
    
    • ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์–ผ๋งˆ์ผ๊นŒ? ์ด๊ฑด n๋งŒํผ์”ฉ 2๋ฒˆ ๋Œ๋ฆฌ๋‹ˆ๊นŒ 2n๋งŒํผ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์—์„œ๋Š” O(2n)์€ ๊ทธ๋ƒฅ O(n)์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค!

    • ์™œ๋ƒํ•˜๋ฉด ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์‹ค์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ running time์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ๊ฒŒ ์•„๋‹ˆ๋ผ ์žฅ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์— ์ฆ๊ฐ€์œจ์„ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ‘œ๊ธฐ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ƒ์ˆ˜๋Š” ๊ณ ์ •๋œ ์ˆซ์ž์ด๋ฏ€๋กœ ์ฆ๊ฐ€์œจ์— ์˜ํ–ฅ์„ ์ฃผ์ง€์•Š๋Š”๋‹ค.

    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ O(nยฒ+ nยฒ) ๋„ O(nยฒ)๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

This post is licensed under CC BY 4.0 by the author.