맨들맨들 돌덩이
Home
  • 분류 전체보기 (439)
    • 프로젝트 (14)
    • NOTICE (2)
    • 개발 (206)
      • Unity (12)
      • JAVA (20)
      • SPRING (9)
      • DB (10)
      • FronT (14)
      • 알고리즘 (16)
      • 이코테 (25)
      • Python (60)
      • Arduino (4)
      • WEB (18)
      • C++ (17)
    • 게임 (33)
      • DNF (31)
      • LostArk (2)
    • KT_DS (93)
      • 보호관리용 (3)
    • 실습코드 (64)
      • 실습 코드 (63)
    • 독서 (2)
      • 생각넓히기 (2)
    • Setting (17)
    • 일상 (8)
ALL
  • 분류 전체보기 (439)
    • 프로젝트 (14)
    • NOTICE (2)
    • 개발 (206)
      • Unity (12)
      • JAVA (20)
      • SPRING (9)
      • DB (10)
      • FronT (14)
      • 알고리즘 (16)
      • 이코테 (25)
      • Python (60)
      • Arduino (4)
      • WEB (18)
      • C++ (17)
    • 게임 (33)
      • DNF (31)
      • LostArk (2)
    • KT_DS (93)
      • 보호관리용 (3)
    • 실습코드 (64)
      • 실습 코드 (63)
    • 독서 (2)
      • 생각넓히기 (2)
    • Setting (17)
    • 일상 (8)
블로그 내 검색

맨들맨들 돌덩이

티스토리 생일 : 2020.11.18. 모든 문의 : highcw@naver.com

  • 개발/이코테

    이진 탐색 알고리즘. 순차 탐색과 이진 탐색의 정의

    2022. 4. 19.

    by. KAEY

    이것이 코딩테스트다. 나동빈 신님의 강의를 바탕으로 작성하였습니다.

    아이패드로 공부해놓고 블로그로 옮기면서 작성하는거 귀찮아서 미루다가 다시 업로드.


    이진 탐색 알고리즘

    순차 탐색 : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법
    이진 탐색 : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법.

       >> 이진 탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정합니다.

     


     * 중간점의 경우 짝수는 5와 6으로 두 개가 될 수 있는데 이 경우, 소숫점 이하는 제거함.
      반 씩 좁혀가면서 찾아가는 개념. 

     


     이진 탐색의 시간 복잡도

     -단계마다 탐색 범위를 2로 나누는 것과 동일하므로 연산 횟수는 로그N에 비례한다.
     -예를 들어 초기 데이터 개수가 32개일 때, 이상적으로 1단계를 거치면 16개가량의 데이터만 남는다.
      > 2단계를 거치면 8개 가량의 데이터만 남는다.
      > 3단계를 거치면 4개 가량의 데이터만 남는다.
     다시 말해 이진 탐색은 탐색 범위를 반으로 줄이면서 시간 복잡도는 O(Log N)을 보장한다.

     


     bisect_left(a,x) : 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 왼쪽 인덱스를 반환
     bisect_right(a,x) : 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 오른쪽 인덱스를 반환
     


     파라메트릭 서치
     > 최적화 문제를 결정 문제( 예 혹은 아니오 ) 로 바꾸어 해결하는 기법.
     예시 : 특정한 조건을 만족하는 가장 알맞은 값을 빠르게 찾는 최적화 문제.
     일반적으로 코테에서 파라메트릭 서치 문제는 이진 탐색을 이용하여 해결할 수 있다.

     

     


    저작자표시 비영리 동일조건 (새창열림)

    '개발 > 이코테' 카테고리의 다른 글

    다이나믹 프로그래밍 vs 분할 정복 비교. 공통점 차이점  (0) 2022.04.21
    다이나믹 프로그래밍의 정의, 동적 계획법, 탑다운 방식, 바텀업 방식  (0) 2022.04.21
    그래프 탐색 알고리즘 DFS/BFS 정의 개요 사용방법  (0) 2021.12.16
    구현 알고리즘(Implementation) 정의  (0) 2021.12.14
    그리디 알고리즘 개요, 정의, 예제 코드  (0) 2021.12.14

    댓글 (비로그인 댓글 허용하지 않습니다.)

    관련글

    • 다이나믹 프로그래밍 vs 분할 정복 비교. 공통점 차이점 2022.04.21
    • 다이나믹 프로그래밍의 정의, 동적 계획법, 탑다운 방식, 바텀업 방식 2022.04.21
    • 그래프 탐색 알고리즘 DFS/BFS 정의 개요 사용방법 2021.12.16
    • 구현 알고리즘(Implementation) 정의 2021.12.14
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
KAEY
#모바일 접속 차단. (PC 환경 자동 리다이렉트) #현재 블로그내 모든 광고는 티스토리(카카오)에서 게시한 광고입니다😢. #문의 이메일 : highcw@naver.com

티스토리툴바