SlideShare a Scribd company logo
1 of 15
By POSTECH Computer Algorithm Team
Binary Search
박한빛
이진탐색
Contents
POSTECH Computer Algorithm Team
이진탐색의 개념 1
개요 0
예시 2
필요성 3
문제들 4
POSTECH Computer Algorithm Team
- 이번 시간에는 이진탐색에 대해 알아보겠습니다.
- 말 그대로 탐색의 한 종류로, 특정한 조건하에 어떤 값을 찾는 알고리즘입니다.
개요
개요
POSTECH Computer Algorithm Team
- 우선 아래와 상황을 생각해봅시다.
Q) N개의 정수 배열 arr에서 특정한 값 M을 찾는 방법과 그 시간 복잡도(Big O)는?
A) M을 찾을 때까지 배열의 처음부터 끝까지 찾아본다. 즉, O(N)의 시간이 소요된다!
- 그럼, 배열이 정렬되어 있다면?
이진탐색
이진탐색의 개념
POSTECH Computer Algorithm Team
이진탐색
이진탐색의 개념
- 배열의 값을 y축, Index를 x축으로 두면 정렬된
배열을 그림과 같이 표현할 수 있습니다.
- 이 상황에서 우리가 찾는 값 M이 5번보다 크다면
당연히 1~4번의 값을 찾아볼 필요가 없습니다.
- 이런 성질들을 이용해봅시다!
1 2 3 4 5 6 7
POSTECH Computer Algorithm Team
- 정렬된 배열 arr의 i번째 값을 봤을 때 내가 찾는 값 M과 비교하는 경우는,
If(배열의 i번째 값 arr[i] > M) -> i~N번째 값을 찾아볼 필요가 없음(= 1~i번째에 원하는 값이 있음).
If(배열의 i번째 값 arr[i] < M) -> 1~i번째 값을 찾아볼 필요가 없음(= i~N번째에 원하는 값이 있음).
If(배열의 i번째 값 arr[i] == M) -> 원하는 값을 찾음.
- 위와 같이 정리할 수 있습니다.
이진탐색
이진탐색의 개념
POSTECH Computer Algorithm Team
- 지금까지 정리한 걸 보면, 내가 본 값(arr[i])을 찾는 값(M)과 비교해서 답의 범위를 줄여 나갈 수 있다!
- 첫 시간에 우리는 최악의 경우를 고려하는 시간 복잡도 표기법인 Big O notation을 배웠다!
Q) 그렇다면 Big O notation을 사용했을 때 최대한 시간 복잡도를 낮게 하려면 어떻게 비교해야 할까요?
-> Q) 즉, 최악의 경우일 때 답의 범위를 최대한 좁히려면 어떻게 비교해야 할까요?
이진탐색
이진탐색의 개념
POSTECH Computer Algorithm Team
A) 답이 있을 수 있는 범위의 중간과 비교하면 된다!
- 중간의 값과 비교하면 최악의 경우라도 범위가 절반으로 줄어든다!
이진탐색
이진탐색의 개념
POSTECH Computer Algorithm Team
- 예시를 들어봅시다.
- 아래와 같은 배열에서 3이 찾고 싶다면?
예시
예시
답이 있을 수 있는 범위
현재 비교하는 값
POSTECH Computer Algorithm Team
- 그렇다면 이진탐색을 사용하면 뭐가 좋을지 아래의 질문을 보면서 알아봅시다.
Q) 8개의 정수가 정렬되어 있다. 이때 원하는 값을 찾는 데에 필요한 최악의 연산횟수는?
A-1) 1~8개의 변수를 모두 돌아본다. -> 8번.
A-2) 이진탐색을 활용한다. (8->4->2->1)의 순서로 답으로 가능한 범위가 좁혀지므로 4번.
- 정수가 1000개, 10000개, 1000000개 라면?
필요성
이진탐색의 필요성
POSTECH Computer Algorithm Team
- 결국 이진탐색을 사용하는 이유는 빠르기 때문이다!
Q) 이진탐색을 활용하였을 때 N개의 원소에서 M을 찾는 시간 복잡도는?
A) 한 번 연산할 때마다 범위가 절반이 되므로 O(logN)이 된다. 이진탐색은 N이 커지면 커질수록 빛을 발한다!
필요성
이진탐색의 필요성
POSTECH Computer Algorithm Team
- 정렬되어 있지 않다면 이진탐색을 활용할 수 없습니다.
Q) N개의 정렬되지 않은 정수 배열이 있다. 이때 특정한 값을 찾는데 걸리는 시간은?
(Hint – N개의 값을 정렬하는데 필요한 시간 복잡도는 O(NlogN)이다)
A-1) N개의 변수를 모두 돌아본다. -> N
A-2) 이진탐색을 활용한다. 정렬을 한 후, 이진탐색을 한다. -> NlogN(정렬) + logN(이진탐색)
Q) 그렇다면, 특정한 값을 M번 찾아야 한다면?
필요성
이진탐색의 필요성
POSTECH Computer Algorithm Team
A-1) N개의 변수를 M번 돌아본다. -> NM
A-2) 정렬을 한 후, M번 이진탐색을 한다. -> NlogN(정렬) + MlogN(이진탐색)
- 이와 같이 경우에 따라 정렬되어 있지 않은 배열이 주어져도, 직접 정렬을 한 후 이진탐색을 하는 것이 더 효율
적일 수 있습니다.
필요성
이진탐색의 필요성
POSTECH Computer Algorithm Team
https://www.acmicpc.net/problem/1920
https://www.acmicpc.net/problem/3090
https://www.acmicpc.net/problem/1114
- 2,3번은 비슷한 방식으로 풀 수 있습니다!
문제
이진탐색 문제들
POSCAT
Thank you :-)

More Related Content

What's hot

Kooc ch1 _suman
Kooc ch1 _sumanKooc ch1 _suman
Kooc ch1 _sumansuman_lim
 
인공지능 맛보기
인공지능 맛보기인공지능 맛보기
인공지능 맛보기Park JoongSoo
 
String algorithm
String algorithmString algorithm
String algorithm승혁 조
 
기계학습 Overview
기계학습  Overview기계학습  Overview
기계학습 Overviewjaeho kang
 
Machine learning linearregression
Machine learning linearregressionMachine learning linearregression
Machine learning linearregressionHaYoungChoi17
 
Binary search tree
Binary search treeBinary search tree
Binary search treeMelon Lemon
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3Haesun Park
 

What's hot (9)

Kooc ch1 _suman
Kooc ch1 _sumanKooc ch1 _suman
Kooc ch1 _suman
 
인공지능 맛보기
인공지능 맛보기인공지능 맛보기
인공지능 맛보기
 
String algorithm
String algorithmString algorithm
String algorithm
 
1.introduction
1.introduction1.introduction
1.introduction
 
기계학습 Overview
기계학습  Overview기계학습  Overview
기계학습 Overview
 
Machine learning linearregression
Machine learning linearregressionMachine learning linearregression
Machine learning linearregression
 
Binary search tree
Binary search treeBinary search tree
Binary search tree
 
문자열 검색 (1)
문자열 검색 (1)문자열 검색 (1)
문자열 검색 (1)
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3
 

Similar to 04. binary search

01. c and time complexity
01. c and time complexity01. c and time complexity
01. c and time complexity승혁 조
 
한눈에 보는 머신러닝
한눈에 보는 머신러닝한눈에 보는 머신러닝
한눈에 보는 머신러닝주경 이
 
Ensemble Model (Hybrid model)
Ensemble Model (Hybrid model)Ensemble Model (Hybrid model)
Ensemble Model (Hybrid model)Jeonghun Yoon
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary SearchBill Kim
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort[Algorithm] Selection Sort
[Algorithm] Selection SortBill Kim
 
02. data structure and stl
02. data structure and stl02. data structure and stl
02. data structure and stl승혁 조
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdolsseungdols
 
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic용진 조
 
세미나
세미나세미나
세미나Dongyi Kim
 

Similar to 04. binary search (16)

01. c and time complexity
01. c and time complexity01. c and time complexity
01. c and time complexity
 
한눈에 보는 머신러닝
한눈에 보는 머신러닝한눈에 보는 머신러닝
한눈에 보는 머신러닝
 
Ensemble Model (Hybrid model)
Ensemble Model (Hybrid model)Ensemble Model (Hybrid model)
Ensemble Model (Hybrid model)
 
분할정복
분할정복분할정복
분할정복
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary Search
 
Number theory
Number theoryNumber theory
Number theory
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort[Algorithm] Selection Sort
[Algorithm] Selection Sort
 
자료구조01
자료구조01자료구조01
자료구조01
 
자료구조01
자료구조01자료구조01
자료구조01
 
자료구조01
자료구조01자료구조01
자료구조01
 
6. Sorting
6. Sorting6. Sorting
6. Sorting
 
02. data structure and stl
02. data structure and stl02. data structure and stl
02. data structure and stl
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
 
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
 
06. sorting
06. sorting06. sorting
06. sorting
 
세미나
세미나세미나
세미나
 

More from 승혁 조

RSS Live Slider
RSS Live SliderRSS Live Slider
RSS Live Slider승혁 조
 
Parallel binary search
Parallel binary searchParallel binary search
Parallel binary search승혁 조
 
Geometry Algorithms
Geometry AlgorithmsGeometry Algorithms
Geometry Algorithms승혁 조
 
Heavy light decomposition
Heavy light decompositionHeavy light decomposition
Heavy light decomposition승혁 조
 
Advanced segment tree
Advanced segment treeAdvanced segment tree
Advanced segment tree승혁 조
 
L-R network flow
L-R network flowL-R network flow
L-R network flow승혁 조
 
Sqrt(n) algorithm
Sqrt(n) algorithmSqrt(n) algorithm
Sqrt(n) algorithm승혁 조
 
DP Optimization
DP OptimizationDP Optimization
DP Optimization승혁 조
 
2019 ppc answers
2019 ppc answers2019 ppc answers
2019 ppc answers승혁 조
 
Tree algorithm
Tree algorithmTree algorithm
Tree algorithm승혁 조
 
05. network flow 2
05. network flow 205. network flow 2
05. network flow 2승혁 조
 
05 divide and conquer
05 divide and conquer05 divide and conquer
05 divide and conquer승혁 조
 
04. network flow 1
04. network flow   104. network flow   1
04. network flow 1승혁 조
 

More from 승혁 조 (20)

RSS Live Slider
RSS Live SliderRSS Live Slider
RSS Live Slider
 
Parallel binary search
Parallel binary searchParallel binary search
Parallel binary search
 
Geometry Algorithms
Geometry AlgorithmsGeometry Algorithms
Geometry Algorithms
 
FFT
FFTFFT
FFT
 
Heavy light decomposition
Heavy light decompositionHeavy light decomposition
Heavy light decomposition
 
Advanced segment tree
Advanced segment treeAdvanced segment tree
Advanced segment tree
 
L-R network flow
L-R network flowL-R network flow
L-R network flow
 
MCMF
MCMFMCMF
MCMF
 
Sqrt(n) algorithm
Sqrt(n) algorithmSqrt(n) algorithm
Sqrt(n) algorithm
 
DP Optimization
DP OptimizationDP Optimization
DP Optimization
 
NIM game
NIM gameNIM game
NIM game
 
DP 중급 2
DP 중급 2DP 중급 2
DP 중급 2
 
2019 ppc answers
2019 ppc answers2019 ppc answers
2019 ppc answers
 
Tree algorithm
Tree algorithmTree algorithm
Tree algorithm
 
Number theory
Number theoryNumber theory
Number theory
 
05. network flow 2
05. network flow 205. network flow 2
05. network flow 2
 
05 divide and conquer
05 divide and conquer05 divide and conquer
05 divide and conquer
 
04. network flow 1
04. network flow   104. network flow   1
04. network flow 1
 
03. dp easy
03. dp easy03. dp easy
03. dp easy
 
01. dp hard
01. dp hard01. dp hard
01. dp hard
 

04. binary search

  • 1. By POSTECH Computer Algorithm Team Binary Search 박한빛 이진탐색
  • 2. Contents POSTECH Computer Algorithm Team 이진탐색의 개념 1 개요 0 예시 2 필요성 3 문제들 4
  • 3. POSTECH Computer Algorithm Team - 이번 시간에는 이진탐색에 대해 알아보겠습니다. - 말 그대로 탐색의 한 종류로, 특정한 조건하에 어떤 값을 찾는 알고리즘입니다. 개요 개요
  • 4. POSTECH Computer Algorithm Team - 우선 아래와 상황을 생각해봅시다. Q) N개의 정수 배열 arr에서 특정한 값 M을 찾는 방법과 그 시간 복잡도(Big O)는? A) M을 찾을 때까지 배열의 처음부터 끝까지 찾아본다. 즉, O(N)의 시간이 소요된다! - 그럼, 배열이 정렬되어 있다면? 이진탐색 이진탐색의 개념
  • 5. POSTECH Computer Algorithm Team 이진탐색 이진탐색의 개념 - 배열의 값을 y축, Index를 x축으로 두면 정렬된 배열을 그림과 같이 표현할 수 있습니다. - 이 상황에서 우리가 찾는 값 M이 5번보다 크다면 당연히 1~4번의 값을 찾아볼 필요가 없습니다. - 이런 성질들을 이용해봅시다! 1 2 3 4 5 6 7
  • 6. POSTECH Computer Algorithm Team - 정렬된 배열 arr의 i번째 값을 봤을 때 내가 찾는 값 M과 비교하는 경우는, If(배열의 i번째 값 arr[i] > M) -> i~N번째 값을 찾아볼 필요가 없음(= 1~i번째에 원하는 값이 있음). If(배열의 i번째 값 arr[i] < M) -> 1~i번째 값을 찾아볼 필요가 없음(= i~N번째에 원하는 값이 있음). If(배열의 i번째 값 arr[i] == M) -> 원하는 값을 찾음. - 위와 같이 정리할 수 있습니다. 이진탐색 이진탐색의 개념
  • 7. POSTECH Computer Algorithm Team - 지금까지 정리한 걸 보면, 내가 본 값(arr[i])을 찾는 값(M)과 비교해서 답의 범위를 줄여 나갈 수 있다! - 첫 시간에 우리는 최악의 경우를 고려하는 시간 복잡도 표기법인 Big O notation을 배웠다! Q) 그렇다면 Big O notation을 사용했을 때 최대한 시간 복잡도를 낮게 하려면 어떻게 비교해야 할까요? -> Q) 즉, 최악의 경우일 때 답의 범위를 최대한 좁히려면 어떻게 비교해야 할까요? 이진탐색 이진탐색의 개념
  • 8. POSTECH Computer Algorithm Team A) 답이 있을 수 있는 범위의 중간과 비교하면 된다! - 중간의 값과 비교하면 최악의 경우라도 범위가 절반으로 줄어든다! 이진탐색 이진탐색의 개념
  • 9. POSTECH Computer Algorithm Team - 예시를 들어봅시다. - 아래와 같은 배열에서 3이 찾고 싶다면? 예시 예시 답이 있을 수 있는 범위 현재 비교하는 값
  • 10. POSTECH Computer Algorithm Team - 그렇다면 이진탐색을 사용하면 뭐가 좋을지 아래의 질문을 보면서 알아봅시다. Q) 8개의 정수가 정렬되어 있다. 이때 원하는 값을 찾는 데에 필요한 최악의 연산횟수는? A-1) 1~8개의 변수를 모두 돌아본다. -> 8번. A-2) 이진탐색을 활용한다. (8->4->2->1)의 순서로 답으로 가능한 범위가 좁혀지므로 4번. - 정수가 1000개, 10000개, 1000000개 라면? 필요성 이진탐색의 필요성
  • 11. POSTECH Computer Algorithm Team - 결국 이진탐색을 사용하는 이유는 빠르기 때문이다! Q) 이진탐색을 활용하였을 때 N개의 원소에서 M을 찾는 시간 복잡도는? A) 한 번 연산할 때마다 범위가 절반이 되므로 O(logN)이 된다. 이진탐색은 N이 커지면 커질수록 빛을 발한다! 필요성 이진탐색의 필요성
  • 12. POSTECH Computer Algorithm Team - 정렬되어 있지 않다면 이진탐색을 활용할 수 없습니다. Q) N개의 정렬되지 않은 정수 배열이 있다. 이때 특정한 값을 찾는데 걸리는 시간은? (Hint – N개의 값을 정렬하는데 필요한 시간 복잡도는 O(NlogN)이다) A-1) N개의 변수를 모두 돌아본다. -> N A-2) 이진탐색을 활용한다. 정렬을 한 후, 이진탐색을 한다. -> NlogN(정렬) + logN(이진탐색) Q) 그렇다면, 특정한 값을 M번 찾아야 한다면? 필요성 이진탐색의 필요성
  • 13. POSTECH Computer Algorithm Team A-1) N개의 변수를 M번 돌아본다. -> NM A-2) 정렬을 한 후, M번 이진탐색을 한다. -> NlogN(정렬) + MlogN(이진탐색) - 이와 같이 경우에 따라 정렬되어 있지 않은 배열이 주어져도, 직접 정렬을 한 후 이진탐색을 하는 것이 더 효율 적일 수 있습니다. 필요성 이진탐색의 필요성
  • 14. POSTECH Computer Algorithm Team https://www.acmicpc.net/problem/1920 https://www.acmicpc.net/problem/3090 https://www.acmicpc.net/problem/1114 - 2,3번은 비슷한 방식으로 풀 수 있습니다! 문제 이진탐색 문제들