SlideShare una empresa de Scribd logo
1 de 32
Python
이민석
국민대학교 컴퓨터공학부
http://sw4all.tistory.com/
Binary Search & …
이민석
국민대학교 컴퓨터공학부
http://sw4all.tistory.com/
학습 목표
1. 데이터 정렬 잠깐 remind
2. 정렬된 데이터에서 원하는 내용 찾기
(Binary Search – 이진 탐색)
Naver ‘핫토픽 키워드’
2015년 5월 9일 오전 8시, 11시, 14시
세상의 많은 문제의 본질은...
• 데이터 사이의 관계를 이해하는 것
데이터의 순서
 정렬 (Sorting) : 어떤 기준이든.
데이터의 소속
 분류 (Categorizing) 및 인식 : 어떤 구분이든.
데이터의 연관성
 관계 (Relation)의 설정 : 어떤 이유이든.
데이터의 변화
 추세(Trend)의 확인 : 어떤 관점이든.
데이터의 정렬 방식
• Simple sorts
 Insertion sort
 Selection sort
• Efficient sorts
 Merge sort
 Heap sort
 Quick sort
• Bubble sort and variants
 Bubble sort
 Shell sort
 Comb sort
• Distribution sort
 Counting sort
 Bucket sort
 Radix sort
• …
문제는 다 같다:
데이터를 순서대로 정렬하는 것
답은 다르다:
데이터의 모양에 따라서
http://en.wikipedia.org/wiki/Sorting_algorithm
정렬이 된 (sorted) 것들
[a .. zzz]
[갈홍기 .. 황희민]
오늘은, 찾아보는 겁니다.
본질적으로 균일한 index로
찾기
50 페이지 셋째줄
내용과 상관없이
“몇번째” 에 있는지 이미 알면
탐색 없이 바로 접근
BUT, 그러나
“독도” 단어 찾기
“독도” 단어 찾기
list = [세종실록지리지의 모든 단어를 차례로 나열]
for s in list :
if (s == “독도”) :
print(“발견”)
‘통밥’ 아니면
앞에서 부터 차례로 찾는 것 이외에는 다른 대안이 없다.
우연히, 내가 찾는 단어(item)가 제일 첫 단어 일 수도 있고
재수가 없으면, 제일 마지막 단어 일 수도 있다.
단어 수가 100개라면 평균 50번을 비교해야 찾는다.
그래서 우리는,
 목차 (주제 별)
(단어 알파벳 순) 인덱스 
키워드로  페이지(index)를 얻은 후,
바로 접근
그리고, HyperLink도 만들고..
사람이, 사전에서 단어 찾기
[a .. zzz]
인간은 ‘통밥’에 능하다 (1,2,3)
- 통밥은 경험에 의한 가상의 index에 의존
하지만 인간은 detail에 약하다. (4)
1. “감”을 동원하여 적당한 곳을 펼친다.
2. 찾는 단어의 더 앞에 있는지 뒤에 있는지 확인하고
3. 한두번 더 펼쳐본다.
4. 거의 근처에 왔으므로 한장씩 넘겨본다
5. 단어가 있는 페이지를 찾은 뒤에,
6. 페이지 안의 단어를 1~5 방식으로 (하지만 아주 빠르게) 찾는다
정렬된 사전에서.. 컴퓨터가 같은 일을 하도록 해야한다면..
list = [세종실록지리지의 모든 단어를 차례로 나열]
for s in list :
if (s == “독도”) :
print(“발견”)
어쨋거나
적어도 이거보다는 나아야..
‘컴퓨터가’ 의 의미: 가상적인 인덱스 (경험에 의한 단어 분포의 이해) 를 알지 못한다는 의미
짜잔, Binary Search (이진 탐색)
크다 작다 게임에 답을 맞추는 것과 같은 방식
“A가 1~1000까지 숫자를 하나 생각하고, B가 아무런 사전정보 없이 맞추는 게임
독심술 초능력을 가지지 않은 B의 Best 작전은, 반씩 잘라가는 거.
500
750
875
…
…
625
250
375
125
최악의 경우
log2(후보개수) 번의 실패
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
이진 탐색
• 문제 : 정렬된 (sorted) 리스트 x 에서 x[i] = “찾는 값”인 i를 찾는 것
(또는 그런 i가 없다는 것을 확인하는 것)
– Ex, 사전에서 “Dog” 이란 단어를 찾는 것  결과: page, 컬럼, 라인
– Ex, 가나다 순 학생 명부에서 “홍길동”을 찾는 것  결과: 학생의 학번
• Ex. 아래에서 13 찾기
15
99
max
16
2
min
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min 중간위치 8 선택
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min 13 < 53, 실패
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min 중간위치 3 선택
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min 13 < 14, 또 실패
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min
중간위치 1 선택
21 3 4 5 …0
…1413 25 336
max
2
min
6 < 13, 또 실패
21 3 4 5 …0
…1413 25 336
min
max
2
성공 !
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
이진 탐색
• 문제 : 정렬된 (sorted) 리스트 x 에서 x[i] = “찾는 값”인 i를 찾는 것
(또는 그런 i가 없다는 것을 확인하는 것)
– Ex, 사전에서 “Dog” 이란 단어를 찾는 것  결과: page, 컬럼, 라인
– Ex, 가나다 순 학생 명부에서 “홍길동”을 찾는 것  결과 학생의 학번
• Ex. 아래에서 94 찾기
15
99
max
16
2
min
(없음)
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min 중간위치 8 선택
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min 53 < 94, 실패
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min
중간위치 12 선택
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
93 < 94, 실패
821 3 4 65 7 109 11 12 14130
641413 25 33 5147 53 8472 93 95 97966
15
99
max
16
2
min
min
min
… 109 11 12 1413
64… 8472 93 95 9796
15
99
max
16
min
중간위치 14 선택
… 109 11 12 1413
64… 8472 93 95 9796
15
99
max
16
min
94 < 96, 실패
… 109 11 12 1413
64… 8472 93 95 9796
15
99
16
min
max앗, 94 != 95, 실패
찾을 값
시작은 중간 위치부터
같지 않으면, min, max 위치 조정 후
새로운 중간 지점 지정
실행 결과
프로그래밍 팁:
• 리스트가 위 처럼 생겼을 때 (2진 탐색 프로그램을 작성한 경우)
– 어떤 숫자를 찾아 내는 (또는 못찾았다고 하는) Test를 해야하며
– 리스트의 처음 숫자인 2, 마지막 숫자인 99가 잘 찾아지는 지를 꼭 확
인
(Boundary Condition Test)
• 프로그래밍 tip = 사람이 ‘무의식적으로’ 생각하는 방법
간격이 1m 인 기둥이 한 줄로 세개 서 있다, 첫번째 기둥과 세번째 기둥의 거리는?
정렬이 된 (sorted) 것들
[a .. zzz]
[갈홍기 .. 황희민]
Python 에서의 사전 (dict)
요약
1. 데이터 정렬 잠깐 remind
2. 정렬된 데이터에서 원하는 내용 찾기
(Binary Search – 이진 탐색)
3. Python의 사전 데이터 형: dictionary
http://sw4all.tistory.com/

Más contenido relacionado

Destacado

국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌Minsuk Lee
 
왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?Minsuk Lee
 
소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?Minsuk Lee
 
소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자Minsuk Lee
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍Minsuk Lee
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewMinsuk Lee
 
자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법Minsuk Lee
 

Destacado (7)

국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
국민대-컴퓨터프로그래밍-2017-1-오프라인강좌
 
왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?
 
소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?
 
소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code review
 
자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법
 

Más de Minsuk Lee

CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드Minsuk Lee
 
NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트Minsuk Lee
 
모두콘, 어떻게 배울 것인가 발제.
모두콘,  어떻게 배울 것인가 발제.모두콘,  어떻게 배울 것인가 발제.
모두콘, 어떻게 배울 것인가 발제.Minsuk Lee
 
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자Minsuk Lee
 
개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?Minsuk Lee
 
진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여 진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여 Minsuk Lee
 
FOSS CON Korea 2018
FOSS CON Korea 2018FOSS CON Korea 2018
FOSS CON Korea 2018Minsuk Lee
 
소프트웨어 공부하는법
소프트웨어 공부하는법소프트웨어 공부하는법
소프트웨어 공부하는법Minsuk Lee
 
왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?Minsuk Lee
 
Somul 2017-이민석
Somul 2017-이민석Somul 2017-이민석
Somul 2017-이민석Minsuk Lee
 
Next에서 공부하는 법
Next에서 공부하는 법Next에서 공부하는 법
Next에서 공부하는 법Minsuk Lee
 
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Deview 2013 - 나는 왜 개발자인데자신이 없을까?
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?Minsuk Lee
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2Minsuk Lee
 
OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25Minsuk Lee
 
임베디드시스템개발 Part1
임베디드시스템개발 Part1임베디드시스템개발 Part1
임베디드시스템개발 Part1Minsuk Lee
 
임베디드시스템과시장
임베디드시스템과시장임베디드시스템과시장
임베디드시스템과시장Minsuk Lee
 

Más de Minsuk Lee (16)

CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드
 
NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트
 
모두콘, 어떻게 배울 것인가 발제.
모두콘,  어떻게 배울 것인가 발제.모두콘,  어떻게 배울 것인가 발제.
모두콘, 어떻게 배울 것인가 발제.
 
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
 
개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?
 
진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여 진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여
 
FOSS CON Korea 2018
FOSS CON Korea 2018FOSS CON Korea 2018
FOSS CON Korea 2018
 
소프트웨어 공부하는법
소프트웨어 공부하는법소프트웨어 공부하는법
소프트웨어 공부하는법
 
왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?
 
Somul 2017-이민석
Somul 2017-이민석Somul 2017-이민석
Somul 2017-이민석
 
Next에서 공부하는 법
Next에서 공부하는 법Next에서 공부하는 법
Next에서 공부하는 법
 
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Deview 2013 - 나는 왜 개발자인데자신이 없을까?
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2
 
OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25
 
임베디드시스템개발 Part1
임베디드시스템개발 Part1임베디드시스템개발 Part1
임베디드시스템개발 Part1
 
임베디드시스템과시장
임베디드시스템과시장임베디드시스템과시장
임베디드시스템과시장
 

Binary search

  • 2. Binary Search & … 이민석 국민대학교 컴퓨터공학부 http://sw4all.tistory.com/
  • 3. 학습 목표 1. 데이터 정렬 잠깐 remind 2. 정렬된 데이터에서 원하는 내용 찾기 (Binary Search – 이진 탐색)
  • 4.
  • 5. Naver ‘핫토픽 키워드’ 2015년 5월 9일 오전 8시, 11시, 14시
  • 6. 세상의 많은 문제의 본질은... • 데이터 사이의 관계를 이해하는 것 데이터의 순서  정렬 (Sorting) : 어떤 기준이든. 데이터의 소속  분류 (Categorizing) 및 인식 : 어떤 구분이든. 데이터의 연관성  관계 (Relation)의 설정 : 어떤 이유이든. 데이터의 변화  추세(Trend)의 확인 : 어떤 관점이든.
  • 7. 데이터의 정렬 방식 • Simple sorts  Insertion sort  Selection sort • Efficient sorts  Merge sort  Heap sort  Quick sort • Bubble sort and variants  Bubble sort  Shell sort  Comb sort • Distribution sort  Counting sort  Bucket sort  Radix sort • … 문제는 다 같다: 데이터를 순서대로 정렬하는 것 답은 다르다: 데이터의 모양에 따라서 http://en.wikipedia.org/wiki/Sorting_algorithm
  • 8. 정렬이 된 (sorted) 것들 [a .. zzz] [갈홍기 .. 황희민]
  • 10. 본질적으로 균일한 index로 찾기 50 페이지 셋째줄 내용과 상관없이 “몇번째” 에 있는지 이미 알면 탐색 없이 바로 접근
  • 12. “독도” 단어 찾기 list = [세종실록지리지의 모든 단어를 차례로 나열] for s in list : if (s == “독도”) : print(“발견”) ‘통밥’ 아니면 앞에서 부터 차례로 찾는 것 이외에는 다른 대안이 없다. 우연히, 내가 찾는 단어(item)가 제일 첫 단어 일 수도 있고 재수가 없으면, 제일 마지막 단어 일 수도 있다. 단어 수가 100개라면 평균 50번을 비교해야 찾는다.
  • 13. 그래서 우리는,  목차 (주제 별) (단어 알파벳 순) 인덱스  키워드로  페이지(index)를 얻은 후, 바로 접근
  • 15. 사람이, 사전에서 단어 찾기 [a .. zzz] 인간은 ‘통밥’에 능하다 (1,2,3) - 통밥은 경험에 의한 가상의 index에 의존 하지만 인간은 detail에 약하다. (4) 1. “감”을 동원하여 적당한 곳을 펼친다. 2. 찾는 단어의 더 앞에 있는지 뒤에 있는지 확인하고 3. 한두번 더 펼쳐본다. 4. 거의 근처에 왔으므로 한장씩 넘겨본다 5. 단어가 있는 페이지를 찾은 뒤에, 6. 페이지 안의 단어를 1~5 방식으로 (하지만 아주 빠르게) 찾는다
  • 16. 정렬된 사전에서.. 컴퓨터가 같은 일을 하도록 해야한다면.. list = [세종실록지리지의 모든 단어를 차례로 나열] for s in list : if (s == “독도”) : print(“발견”) 어쨋거나 적어도 이거보다는 나아야.. ‘컴퓨터가’ 의 의미: 가상적인 인덱스 (경험에 의한 단어 분포의 이해) 를 알지 못한다는 의미
  • 17. 짜잔, Binary Search (이진 탐색) 크다 작다 게임에 답을 맞추는 것과 같은 방식 “A가 1~1000까지 숫자를 하나 생각하고, B가 아무런 사전정보 없이 맞추는 게임 독심술 초능력을 가지지 않은 B의 Best 작전은, 반씩 잘라가는 거. 500 750 875 … … 625 250 375 125 최악의 경우 log2(후보개수) 번의 실패
  • 18. 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 이진 탐색 • 문제 : 정렬된 (sorted) 리스트 x 에서 x[i] = “찾는 값”인 i를 찾는 것 (또는 그런 i가 없다는 것을 확인하는 것) – Ex, 사전에서 “Dog” 이란 단어를 찾는 것  결과: page, 컬럼, 라인 – Ex, 가나다 순 학생 명부에서 “홍길동”을 찾는 것  결과: 학생의 학번 • Ex. 아래에서 13 찾기 15 99 max 16 2 min
  • 19. 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 중간위치 8 선택 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 13 < 53, 실패 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min
  • 20. 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 중간위치 3 선택 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 13 < 14, 또 실패 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min
  • 21. 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 중간위치 1 선택 21 3 4 5 …0 …1413 25 336 max 2 min 6 < 13, 또 실패 21 3 4 5 …0 …1413 25 336 min max 2 성공 !
  • 22. 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 이진 탐색 • 문제 : 정렬된 (sorted) 리스트 x 에서 x[i] = “찾는 값”인 i를 찾는 것 (또는 그런 i가 없다는 것을 확인하는 것) – Ex, 사전에서 “Dog” 이란 단어를 찾는 것  결과: page, 컬럼, 라인 – Ex, 가나다 순 학생 명부에서 “홍길동”을 찾는 것  결과 학생의 학번 • Ex. 아래에서 94 찾기 15 99 max 16 2 min (없음)
  • 23. 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 중간위치 8 선택 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min 53 < 94, 실패 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min
  • 24. 중간위치 12 선택 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 93 < 94, 실패 821 3 4 65 7 109 11 12 14130 641413 25 33 5147 53 8472 93 95 97966 15 99 max 16 2 min min min
  • 25. … 109 11 12 1413 64… 8472 93 95 9796 15 99 max 16 min 중간위치 14 선택 … 109 11 12 1413 64… 8472 93 95 9796 15 99 max 16 min 94 < 96, 실패 … 109 11 12 1413 64… 8472 93 95 9796 15 99 16 min max앗, 94 != 95, 실패
  • 26. 찾을 값 시작은 중간 위치부터 같지 않으면, min, max 위치 조정 후 새로운 중간 지점 지정
  • 28. 프로그래밍 팁: • 리스트가 위 처럼 생겼을 때 (2진 탐색 프로그램을 작성한 경우) – 어떤 숫자를 찾아 내는 (또는 못찾았다고 하는) Test를 해야하며 – 리스트의 처음 숫자인 2, 마지막 숫자인 99가 잘 찾아지는 지를 꼭 확 인 (Boundary Condition Test) • 프로그래밍 tip = 사람이 ‘무의식적으로’ 생각하는 방법 간격이 1m 인 기둥이 한 줄로 세개 서 있다, 첫번째 기둥과 세번째 기둥의 거리는?
  • 29. 정렬이 된 (sorted) 것들 [a .. zzz] [갈홍기 .. 황희민]
  • 31. 요약 1. 데이터 정렬 잠깐 remind 2. 정렬된 데이터에서 원하는 내용 찾기 (Binary Search – 이진 탐색) 3. Python의 사전 데이터 형: dictionary

Notas del editor

  1. 순서는 : 어떤 식이든 Sorting 소속은 : Categorize 분류, 인식 : 사진을 보고 개or고양이, 사과or배 연관성은 : 관계의 정의 : 친구, 부모, 학교-학생 변화는 : 미래 예측 : 어떤 관점이든
  2. 가나다, 기타 등등 우리가 아는 치례로 나열된 것은 알지만…
  3. 컴퓨터는 바로 접근, ‘생활의 달인’ 도
  4. 컴퓨터는 바로 접근, 사람은 ‘달인’ 이 필요
  5. 컴퓨터는 바로 접근, 사람은 ‘달인’ 이 필요
  6. 키워드를 가지고 숫자 (페이지)를 얻은 후, 바로 접근
  7. 가나다, 기타 등등 우리가 아는 치례로 나열된 것은 알지만…
  8. 가나다, 기타 등등 우리가 아는 치례로 나열된 것은 알지만…