Post

๐Ÿค ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด๋ถ„ํƒ์ƒ‰์ด ๋ฌด์—‡์ด๊ณ  ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”

8) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด๋ถ„ํƒ์ƒ‰์ด ๋ฌด์—‡์ด๊ณ  ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ์ด๋ถ„ํƒ์ƒ‰์ด๋ž€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ๋Š” ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

  • ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log 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๋ฅผ ์กฐ์ •ํ•ด์„œ ๋‹ค์‹œ ํ˜ธ์ถœํ•œ๋‹ค.

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

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