Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

Β 

History

History
History

README.md

Outline

binary search

순차 탐색

  • 리슀트 μ•ˆμ— μžˆλŠ” νŠΉμ •ν•œ 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄ μ•žμ—μ„œλΆ€ν„° 데이터λ₯Ό ν•˜λ‚˜μ”© μ°¨λ‘€λŒ€λ‘œ ν™•μΈν•˜λŠ” 방법
  • 리슀트 내에 데이터가 아무리 λ§Žμ•„λ„ μ‹œκ°„λ§Œ μΆ©λΆ„ν•˜λ‹€λ©΄ 항상 μ›ν•˜λŠ” μ›μ†Œ(데이터)λ₯Ό 찾을 수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.
  • λ¦¬μŠ€νŠΈμ— νŠΉμ • κ°’μ˜ μ›μ†Œκ°€ μžˆλŠ”μ§€ 체크할 λ•Œλ„ 순차 νƒμƒ‰μœΌλ‘œ μ›μ†Œλ₯Ό ν™•μΈν•˜κ³ , 리슀트 μžλ£Œν˜•μ—μ„œ νŠΉμ •ν•œ 값을 κ°€μ§€λŠ” μ›μ†Œμ˜ 개수λ₯Ό μ„ΈλŠ” count() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•  λ•Œλ„ λ‚΄λΆ€μ—μ„œλŠ” 순차 탐색이 μˆ˜ν–‰λœλ‹€.
    def sequential_search(n, target, array):
      for i in range(n):
        if array[i] == target:
          return i+1
    
    

이진 탐색

  • 데이터가 λ¬΄μž‘μœ„μΌ λ•ŒλŠ” μ‚¬μš©ν•  수 μ—†μ§€λ§Œ, 이미 μ •λ ¬λ˜μ–΄ μžˆλ‹€λ©΄ 맀우 λΉ λ₯΄κ²Œ 데이터λ₯Ό 찾을 수 μžˆλ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€.
  • μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜ 3개λ₯Ό μ‚¬μš©ν•˜λŠ”λ° νƒμƒ‰ν•˜κ³ μž ν•˜λŠ” λ²”μœ„μ˜ μ‹œμž‘μ , 끝점, 쀑간점이닀.
  • μ°ΎμœΌλ €λŠ” 데이터와 μ€‘κ°„μ μœ„μΉ˜μ— μžˆλŠ” 데이터λ₯Ό 반볡적으둜 λΉ„κ΅ν•΄μ„œ μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎλŠ” 게 μ΄μ§„νƒμƒ‰μ˜ 과정이닀.
  • ν•œ 번 확인할 λ•Œλ§ˆλ‹€ ν™•μΈν•˜λŠ” μ›μ†Œμ˜ κ°œμˆ˜κ°€ μ ˆλ°˜μ”© μ€„μ–΄λ“ λ‹€λŠ” μ μ—μ„œ μ‹œκ°„ λ³΅μž‘λ„κ°€ O(logN)이닀.
  • 이진 탐색을 κ΅¬ν˜„ν•˜λŠ” 방법은 μž¬κ·€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λŠ” 방법, λ‹¨μˆœν•˜κ²Œ λ°˜λ³΅λ¬Έμ„ μ΄μš©ν•˜λŠ” 방법 2κ°€μ§€ 이닀.
    #이진 탐색 μ†ŒμŠ€μ½”λ“œ κ΅¬ν˜„(μž¬κ·€ ν•¨μˆ˜)
    def binary_search(array, target, start, end):
      if start > end:
        return None
      mid = (start + end) // 2
      if array[mid] == target:
        return mid
      elif array[mid] > target:
        return binary_search(array, target, start, mid-1)
      else:
        return binary_search(array, target, mid+1, end)
    
    #이진 탐색 μ†ŒμŠ€μ½”λ“œ(반볡문)
    def binary_search(array, target, start, end):
      while start <= end:
        mid= (start+end) //2
        if array[mid] == target:
          return mid
        elif array[mid] > target:
          end = mid+1
        else:
          start = mid+1
      return None
    
    

트리 자료ꡬ쑰

  • 트리 μžλ£Œκ΅¬μ‘°λŠ” λ…Έλ“œμ™€ λ…Έλ“œμ˜ μ—°κ²°λ‘œ ν‘œν˜„ν•˜λ©° μ—¬κΈ°μ—μ„œ λ…Έλ“œλŠ” μ •λ³΄μ˜ λ‹¨μœ„λ‘œμ„œ μ–΄λ– ν•œ 정보λ₯Ό κ°€μ§€κ³  μžˆλŠ” 개체둜 이해할 수 μžˆλ‹€.
  • 큰 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λŠ” λŒ€λΆ€λΆ„ 데이터λ₯Ό 트리 자료ꡬ쑰둜 μ €μž₯ν•΄μ„œ 이진탐색과 같은 기법을 μ΄μš©ν•΄ λΉ λ₯΄κ²Œ 탐색이 κ°€λŠ₯ν•˜λ‹€.

이진 탐색 트리

  • 이진 탐색 트리의 νŠΉμ§•
    1. λΆ€λͺ¨ λ…Έλ“œλ³΄λ‹€ μ™Όμͺ½ μžμ‹ λ…Έλ“œκ°€ μž‘λ‹€.
    2. λΆ€λͺ¨ λ…Έλ“œλ³΄λ‹€ 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œκ°€ 크닀.
  • 이진 탐색 λ¬Έμ œλŠ” μž…λ ₯ 데이터가 λ§Žκ±°λ‚˜, 탐색 λ²”μœ„κ°€ 맀우 넓은 νŽΈμ΄λ‹€. 예λ₯Ό λ“€μ–΄ λ°μ΄ν„°μ˜ κ°œμˆ˜κ°€ 1,000만 개λ₯Ό λ„˜μ–΄κ°€κ±°λ‚˜ 탐색 λ²”μœ„μ˜ 크기가 1,000μ–΅ 이상이라면 이진 탐색 μ•Œκ³ λ¦¬μ¦˜μ„ μ˜μ‹¬ν•΄λ³΄μž.
  • μž…λ ₯ 데이터가 λ§Žμ€ λ¬Έμ œλŠ” sys 라이브러리의 readline() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ μ‹œκ°„ 초과λ₯Ό ν”Όν•  수 μžˆλ‹€.
    inport sys
    input_data = sys.stdin.readline().rstrip()
    
    
Morty Proxy This is a proxified and sanitized view of the page, visit original site.