본문 바로가기
책/Do it! 알고리즘 코딩 테스트 자바 편

Day-9 이진 탐색

by 댈팽이 2024. 3. 29.
728x90

1. 이진 탐색

  • 데이터가 정렬된 상태에서 원하는 값을 찾아내는 알고리즘이다.
  • 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다.
  • 시간 복잡도는 O(logN)이다.
  • 구현 및 원리가 비교적 간단하여 코딩 테스트에 많이 출제된다.

2. 이진 탐색 과정

  1. 현재 데이터셋의 중앙값을 선택한다.
  2. 중앙값 > 타깃 데이터일 때, 중앙값 기준 왼쪽 데이터셋을 선택한다.
  3. 중앙값 < 타깃 데이터일 때, 중앙값 기준 오른쪽 데이터셋을 선택한다.
  4. 과정 1~3을 반복하다가 중앙값 = 타깃 데이터일 때 탐색을 종료한다.

위 과정은 오름차순으로 정렬된 데이터일 때 이진 탐색 과정이다.

만약 내림차순 정렬 데이터이면 조건을 반대로 하여 과정을 반복하면 된다.


3. 예제 문제

 

[1920] 수 찾기 (JAVA)

# 문제 설명 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는

spicyrisotto.tistory.com

 

[2343] 기타 레슨 (JAVA)

# 문제 설명 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가

spicyrisotto.tistory.com


 

[10815] 숫자 카드 (JAVA)

# 문제 설명 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를

spicyrisotto.tistory.com

728x90

' > Do it! 알고리즘 코딩 테스트 자바 편' 카테고리의 다른 글

Day-12 소수 구하기  (0) 2024.04.04
Day-10,11 그리디 알고리즘  (0) 2024.04.03
Day-8 너비 우선 탐색 BFS  (0) 2024.03.29
Day-8 깊이 우선 탐색 DFS  (0) 2024.03.29
Day-7 계수 정렬  (0) 2024.03.27