SlideShare une entreprise Scribd logo
1  sur  188
1
이 수업은
선생님이 알고리즘을 어느 정도 이해하고
학생들을 가르치면 더 도움이 되지 않을까?라는
생각으로 하는 수업입니다.
학생들에게 가르치라는 것은 아닙니다.
주의 사항
2
광운대학교 로봇학부
박광현
알고리즘
집중 코스
알고리즘?
요리법은
알고리즘일까요?
3
알고리즘?
입력을 출력으로 변환하는 계산 절차
입출력 예시 (정렬 알고리즘)
입력: n개의 숫자로 구성된 시퀀스 𝑎1, 𝑎2, ⋯ , 𝑎 𝑛
출력: 𝑎1
′ ≤ 𝑎2
′ ≤ ⋯ ≤ 𝑎 𝑛
′ 가 되도록 입력 시퀀스를 재정렬
한
𝑎1
′ , 𝑎2
′ , ⋯ , 𝑎 𝑛
′
4
입력 출력
알고리즘이 사용되는 곳
5
영상 통화
영상/음성 압축 알고리즘
내비게이션
경로 탐색 알고리즘
3D 그래픽스
렌더링 알고리즘
로봇
제어 알고리즘
알고리즘을 표현하는 방법
요구 사항
계산 절차가 정확하게 표현되어야 한다.
표현 방법
6
INSERTION-SORT(A)
for j = 2 to A.length
key = A[j]
i = j – 1
while i > 0 and A[i] > key
A[i+1]=A[i]
i = i – 1
A[i+1] = key
순서도 의사 코드 프로그램 코드
좋은 알고리즘이란?
올바른 알고리즘
모든 입력에 대해 올바른 출력을 얻는다.
(항상 올바른 알고리즘만 사용하는 것은 아님 : 허용 오차 범위)
효율성
계산 시간 (시간 복잡도)
메모리 (공간 복잡도)
7
제시간에 계산하지 못하면?
학교에 바라는 바
8
알고리즘
지식
• 사실상 암기 과목임 (이해를 바탕으로 하는)
• 알고리즘 지식은 대학에 가서 배워도 됨
(올림피아드 나갈 것이 아니라면)
• 일반 수업 : 몰라도 됨
• 동아리 : 한 가지 정도 경험해 보는 수준으로
알고리즘
구현
• 돌아만 가면 된다? 코드 대충 짜지 않기
(잘못된 습관은 나중에 고치기 어려움)
• 결과 나왔다고 땡 하지 않기
• 더 좋은 코드를 작성할 수 있도록 고민하기
• 발표와 질문 많이 하기
지금 단계에서는 지식보다 효율적인 구현 중심으로~
9
정렬 알고리즘
정렬 알고리즘
• 버블 정렬
• 선택 정렬 (생략)
• 삽입 정렬
• 병합 정렬 (설명만)
• 퀵 정렬 (설명만)
• 쉘 정렬 (생략)
• 힙 정렬
• 버킷 정렬 (생략)
• 팀 정렬 (소개만)
• ...
10
데이터 셋 만들기
0 ~ 1000 사이의 난수 20개 생성
11
변수 리스트
버블 정렬
12
15
4
8
3
24
9
20
1 2 3 4 5 6 7
버블 정렬
13
4
15
8
3
24
9
20
1 2 3 4 5 6 7
버블 정렬
14
4
15
8
3
24
9
20
1 2 3 4 5 6 7
버블 정렬
15
4
8
15
3
24
9
20
1 2 3 4 5 6 7
버블 정렬
16
4
8
15
3
24
9
20
1 2 3 4 5 6 7
버블 정렬
17
4
8
3
15
24
9
20
1 2 3 4 5 6 7
버블 정렬
18
4
8
3
15
24
9
20
1 2 3 4 5 6 7
버블 정렬
19
4
8
3
15
24
9
20
1 2 3 4 5 6 7
버블 정렬
20
4
8
3
15
9
24
20
1 2 3 4 5 6 7
버블 정렬
21
4
8
3
15
9
24
20
1 2 3 4 5 6 7
버블 정렬
22
4
8
3
15
9
20
24
1 2 3 4 5 6 7
버블 정렬
23
4
8
3
15
9
20
24
1 2 3 4 5 6 7
버블 정렬
24
4
8
3
15
9
20
24
1 2 3 4 5 6 7
버블 정렬
25
4
3
8
15
9
20
24
1 2 3 4 5 6 7
버블 정렬
26
4
3
8
15
9
20
24
1 2 3 4 5 6 7
버블 정렬
27
4
3
8
15
9
20
24
1 2 3 4 5 6 7
버블 정렬
28
4
3
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
29
4
3
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
30
4
3
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
31
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
32
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
33
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
34
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
35
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
36
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
37
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
38
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
39
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
40
3
4
8
9
15
20
24
1 2 3 4 5 6 7
버블 정렬
41
3
4
8
9
15
20
24
1 2 3 4 5 6 7
구현
42
15
4
8
3
24
9
20
데이터 개수 : 7
1 2 3 4 5 6 7
1번째: j = 1~6
데이터[j], 데이터[j+1] 비교
2번째: j = 1~5
데이터[j], 데이터[j+1] 비교
3번째: j = 1~4
데이터[j], 데이터[j+1] 비교
4번째: j = 1~3
데이터[j], 데이터[j+1] 비교
5번째: j = 1~2
데이터[j], 데이터[j+1] 비교
6번째: j = 1~1
데이터[j], 데이터[j+1] 비교
i = (데이터 개수 - 1) ~ 1
j = 1 ~ i
구현
43
데이터 셋 만들기
i = (데이터 개수 – 1) ~ 1
j = 1 ~ i
데이터[j] > 데이터[j+1]
데이터[j]와 데이터[j+1] 맞바꾸기
버블 정렬 파이선 코드
44
def bubbleSort(x):
for i in range(len(x)-1, 0, -1):
for j in range(i):
if x[j] > x[j+1]:
x[j], x[j+1] = x[j+1], x[j]
return x
def bubbleSort(x):
length = len(x)-1
for i in range(length):
for j in range(length-i):
if x[j] > x[j+1]:
x[j], x[j+1] = x[j+1], x[j]
return x
또는
버블 정렬 파이선 코드
45
def bubbleSort(x):
for i in range(len(x)-1, 0, -1):
quit = True
for j in range(i):
if x[j] > x[j+1]:
x[j], x[j+1] = x[j+1], x[j]
quit = False
if quit:
break
return x
삽입 정렬
46
15
4
8
3
24
9
20
1 2 3 4 5 6 7
삽입 정렬
47
15
4
8
3
24
9
20
1 2 3 4 5 6 7
삽입 정렬
48
15
4
8
3
24
9
20
1 2 3 4 5 6 7
삽입 정렬
49
15
4
8
3
24
9
20
1 2 3 4 5 6 7
삽입 정렬
50
15
8
3
24
9
20
4
1 2 3 4 5 6 7
삽입 정렬
51
15
8
3
24
9
20
4
1 2 3 4 5 6 7
삽입 정렬
52
15
8
3
24
9
20
4
1 2 3 4 5 6 7
삽입 정렬
53
15
8
3
24
9
20
4
1 2 3 4 5 6 7
삽입 정렬
54
15
3
24
9
20
4
8
1 2 3 4 5 6 7
삽입 정렬
55
15
24
9
20
8
4
3
1 2 3 4 5 6 7
삽입 정렬
56
15
24
9
20
8
4
3
1 2 3 4 5 6 7
삽입 정렬
57
15
24
9
20
8
4
3
1 2 3 4 5 6 7
삽입 정렬
58
24
20
8
4
3
15
9
1 2 3 4 5 6 7
삽입 정렬
59
24
20
8
4
3
15
9
1 2 3 4 5 6 7
삽입 정렬
60
24
8
4
3
15
9
20
1 2 3 4 5 6 7
구현
61
15
4
8
3
24
9
20
1 2 3 4 5 6 7
i = 2부터 시작
i = 2 ~ (데이터 개수)
구현
62
15
8
3
24
9
20
4
1 2 3 4 5 6 7
j = (i – 1)부터 시작해서
데이터[i]보다 큰 것들을
뒤로 민다.
tmp = 데이터[i]
j = (i-1) ~ 1
데이터[j]가 tmp보다 크면
데이터[j+1] = 데이터[j]
구현
63
15
8
3
24
9
20
4
1 2 3 4 5 6 7
tmp
구현
64
i = 2 ~ (데이터 개수)
j = (1 – 1) ~ 1
tmp = 데이터[i]
데이터[j]가 tmp보다 크면
데이터[j+1] = 데이터[j]
tmp 대입
삽입 정렬 파이선 코드
65
def insert_sort(x):
for i in range(1, len(x)):
j = i – 1
key = x[i]
while x[j] > key and j >= 0:
x[j+1] = x[j]
j = j – 1
x[j+1] = key
return x
병합 정렬
66
15 4 8 3 24 9 20
15 4 8 3 24 9 20
15 3 249 204 8
153 249 204 8
15 4 8 3 24 9 20
15 4 8 3 24 9 20
15 4 8 3 24 9 20
반씩 나눈다.
합치면서 정렬한다.
퀵 정렬
67
15
4
8
3
24
9
20
P j
피봇 값보다 작은 것은 왼쪽에
피봇 값보다 큰 것은 오른쪽에
둔다는 아이디어
i
1 2 3 4 5 6 7
퀵 정렬
68
15
4
8
3
24
9
20
P i j
i <= j이고 i값 <= 피봇 값인 동안 이동
1 2 3 4 5 6 7
퀵 정렬
69
15
4
8
3
24
9
20
P i j
1 2 3 4 5 6 7
i <= j이고 j값 >= 피봇 값인 동안 이동
퀵 정렬
70
15
4
8
3
24
9
20
P i j
1 2 3 4 5 6 7
i와 j가 서로 지나치지 않았으면
값 맞교환
퀵 정렬
71
15
4
8
3
24
9
20
P i j
1 2 3 4 5 6 7
i <= j이고 i값 <= 피봇 값인 동안 이동
퀵 정렬
72
15
4
8
3
24
9
20
P ij
1 2 3 4 5 6 7
i <= j이고 j값 >= 피봇 값인 동안 이동
퀵 정렬
73
15
4
8
3
24
9
20
P ij
1 2 3 4 5 6 7
i와 j가 지나쳤으면
피봇과 j의 값, 인덱스 맞교환
퀵 정렬
74
15
4
8
3
24
9
20
P ij
1 2 3 4 5 6 7
i와 j가 지나쳤으면
피봇과 j의 값, 인덱스 맞교환
퀵 정렬
75
15
4
8
3
24
9
20
P
피봇 기준으로 나누어서
반복
i j P i j
1 2 3 4 5 6 7
퀵 정렬
76
15
4
8
3
24
9
20
P ij P ij
1 2 3 4 5 6 7
i <= j이고 i값 <= 피봇 값인 동안 이동
퀵 정렬
77
15
4
8
3
24
9
20
P j P j
i <= j이고 j값 >= 피봇 값인 동안 이동
i i
1 2 3 4 5 6 7
퀵 정렬
78
15
4
8
3
24
9
20
P Pj ji i
i와 j가 지나쳤으면
피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
퀵 정렬
79
15
4
8
3
24
9
20
P Pj ji i
i와 j가 지나쳤으면
피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
퀵 정렬
80
15
4
8
3
24
9
20
P i j
피봇 기준으로 나누어서
반복
1 2 3 4 5 6 7
퀵 정렬
81
15
4
8
3
24
9
20
P i j
i <= j이고 i값 <= 피봇 값인 동안 이동
1 2 3 4 5 6 7
퀵 정렬
82
15
4
8
3
24
9
20
P i
i <= j이고 j값 >= 피봇 값인 동안 이동
j
1 2 3 4 5 6 7
퀵 정렬
83
15
4
8
3
24
9
20
P ij
i와 j가 지나쳤으면
피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
퀵 정렬
84
15
4
8
3
24
9
20
P i j
피봇 기준으로 나누어서
반복
1 2 3 4 5 6 7
퀵 정렬
85
15
4
8
3
24
9
20
P i j
i <= j이고 i값 <= 피봇 값인 동안 이동
1 2 3 4 5 6 7
퀵 정렬
86
15
4
8
3
24
9
20
P i
i <= j이고 j값 >= 피봇 값인 동안 이동
j
1 2 3 4 5 6 7
퀵 정렬
87
15
4
8
3
24
9
20
P ij
i와 j가 지나쳤으면
피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
퀵 정렬
88
15
4
8
3
24
9
20
피봇 기준으로 나누어서
반복
1 2 3 4 5 6 7
퀵 정렬 파이선 코드 (첫 번째 방법)
89
def quicksort(x):
if len(x) <= 1:
return x
pivot = x[len(x) // 2]
less = []
more = []
equal = []
for a in x:
if a < pivot:
less.append(a)
elif a > pivot:
more.append(a)
else:
equal.append(a)
return quicksort(less) + equal + quicksort(more)
quicksort가 호출될 때마다 새로 만든다.
퀵 정렬 파이선 코드 (두 번째 방법)
90
def partition(x, start, end):
pivot = x[start]
left = start + 1
right = end
done = False
while not done:
while left <= right and x[left] <= pivot:
left += 1
while left <= right and pivot <= x[right]:
right -= 1
if right < left:
done = True
else:
x[left], x[right] = x[right], x[left]
x[start], x[right] = x[right], x[start]
return right
퀵 정렬 파이선 코드 (두 번째 방법)
91
def quick_sort(x, start, end):
if start < end:
pivot = partition(x, start, end)
quick_sort(x, start, pivot - 1)
quick_sort(x, pivot + 1, end)
return x
리스트를 새로 만들지 않고
x의 인덱스만 달리하여 호출
팀(Tim) 정렬 – Tim Peters
• 1993년 ACM-SIAM 심포지엄에서 Peter McIlroy가
발표한 기술 사용
• 2002년 Tim Peters가 파이선에서 사용하기 위해
구현
• 파이선 버전 2.3부터 표준 정렬 알고리즘으로 사용
• 자바 SE7, 안드로이드 등에서 사용
• 실제 데이터에서 가장 좋은 알고리즘으로 알려져
있음
• 파이선 구현: Tim Peters
• 자바 구현: Josh Bloch
92
팀(Tim) 정렬 – Tim Peters
• 데이터가 정렬된 정도에 따라
삽입 정렬과 병합 정렬 사이를 전환하는
적응형 알고리즘
– 삽입 정렬 Worst O(n2) Best O(n) Average O(n2)
– 병합 정렬 Worst O(nlogn) Best O(nlogn)
Average O(nlogn)
– 팀 정렬 Worst O(nlogn) Best O(n)
Average O(nlogn)
– 퀵 정렬 Worst O(n2) Best O(n) ~ O(nlogn)
Average O(nlogn)
93
94
길 찾기 알고리즘
길 찾기
95
길 찾기
96
그래프 표현
97
이동 시간 표시  최단 경로 찾기
98
1
1
1
1
1
1 1
1
1
2 2 2
2
11111
2
2
2
2
2
1
3 3
3
3
3
3
3
3
2
2
2
1
4
4 4
4 5
10
34
6
2
3
44
2 6 7
3
4
4
4
10
10
10
5
1
4
그래프 표현
목적에 따라 여러 형태로 표현 가능
99
https://www.redblobgames.com
오늘의 문제
노드 간 이동 시간은 모두 1로 함
100
너비 우선 탐색
101
10G
S
1 2 3
4 5 6 7 8
9
S
G
너비 우선 탐색
102
S
G
너비 우선 탐색
103
S
G
너비 우선 탐색
104
S
G
너비 우선 탐색
105
S
G
너비 우선 탐색
106
S
G
너비 우선 탐색
107
S
G
너비 우선 탐색
108
S
G
너비 우선 탐색
109
S
G
너비 우선 탐색
110
S
G
너비 우선 탐색
111
S
G
너비 우선 탐색
112
S
G
너비 우선 탐색
113
S
G
너비 우선 탐색
114
S
G
너비 우선 탐색
115
S
G
구현 : 지도 만들기
116
1 리스트 만들기 (이름: 지도)
구현 : 지도 만들기
117
2 지도 데이터 입력
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 0 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
바깥쪽 벽을 만들어 주면 더 좋아요!
각 칸을 구별하기 위한 인덱스 지도 데이터 (벽: 1, 길: 0)
구현 : 지도 만들기
118
2 지도 데이터 입력
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 0 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
항목 수를 70(지도의 전체 칸 수)으로 하여
데이터 입력
순서대로 입력
구현 : 지도 만들기
119
2 지도 데이터 입력
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 0 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
편의를 위해 변수 폭, 높이 추가함
구현 : 지도 만들기
120
2 지도 데이터 입력
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 0 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
또는
항목 수는 0으로 하고
코드를 작성하여 데이터 입력
편의를 위해 변수 폭, 높이 추가함
순서대로 입력
리스트를 만들 때 항목 수를 70으로 하여 데이터를 입력하거나
리스트는 항목 수 0으로 만들고 코드에서 데이터 70개를 추가하거나 둘 중 하나만
구현 : 지도 만들기
지도가 제대로
입력되었는지
확인해 봅시다.
121
그림 크기를 작게 줄이세요
적당한 간격으로
적당한 간격으로
적당한 초기 위치로
변수 추가
너비 우선 탐색
122
S 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
너비 우선 탐색
123
S
S
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
너비 우선 탐색
124
53 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
너비 우선 탐색
125
53 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
너비 우선 탐색
126
53
53
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
너비 우선 탐색
127
43 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
너비 우선 탐색
128
43 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
너비 우선 탐색
129
43
43
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
너비 우선 탐색
130
33 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
너비 우선 탐색
131
33 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
너비 우선 탐색
132
33
33
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
너비 우선 탐색
133
34 32 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
너비 우선 탐색
134
3234 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
너비 우선 탐색
135
3234
34
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
너비 우선 탐색
136
32 35 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
너비 우선 탐색
137
32 35 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
너비 우선 탐색
138
32 35
32
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
너비 우선 탐색
139
35 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
22
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
너비 우선 탐색
140
35 22 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
너비 우선 탐색
141
4522 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
너비 우선 탐색
142
45 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
12
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
너비 우선 탐색
143
5512 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
너비 우선 탐색
144
55 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
13
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
너비 우선 탐색
145
5613 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
너비 우선 탐색
146
56 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
14
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
너비 우선 탐색
147
5714 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
너비 우선 탐색
148
57 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
15
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
너비 우선 탐색
149
4715 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
너비 우선 탐색
150
47 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
16
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
너비 우선 탐색
151
37 4816 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
너비 우선 탐색
152
4837 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
17
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
너비 우선 탐색
153
48 2717 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
너비 우선 탐색
154
492717 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
너비 우선 탐색
155
4927 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
18
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
너비 우선 탐색
156
49 18 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
너비 우선 탐색
157
593918 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
너비 우선 탐색
158
G5939 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
너비 우선 탐색
159
G59 29 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
너비 우선 탐색
160
G 29 12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
너비 우선 탐색
161
G 29
G
12 13 14 15 16 17 18
22 23 24 25 26 27 28 29
32 33 34 35 36 37 38 39
42 43 44 45 46 47 48 49
53 54 55 56 57 58 59S
G
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
경로 역추적
162
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
163
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
164
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
165
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
166
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
167
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
168
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
169
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
170
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
171
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
172
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
173
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
174
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
경로 역추적
175
경로 기록
52  53
53  43
43  33
33  32
33  34
34  35
32  22
35  45
22  12
45  55
12  13
55  56
13  14
56  57
14  15
57  47
15  16
47  37
47  48
16  17
37  27
48  49
17  18
49  39
49  59
18  19
39  29
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
구현 : 초기화
176
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
52후보
출발지 추가
지나간 길 표시
구현 : 경로 찾기
177
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
52후보
52 후보에서 꺼낸다.
구현 : 경로 찾기
178
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 0 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
후보
주위의 4곳을 검사한다.
구현 : 경로 찾기
179
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 2 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
후보
길이 있으면 후보에 추가하고
지나간 길로 표시하고
경로를 기록한다.
주위 4곳의 위치가 입력됨
A
B
A
B
53
A
B
구현 : 경로 찾기
180
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 2 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
주위 4곳의 위치가 입력됨
길이 있으면 후보에 추가하고
지나간 길로 표시하고
경로를 기록한다.
리스트의 인덱스 값
다음 위치 현재 위치
구현 : 경로 찾기
181
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 2 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
후보
더 이상 길이 없거나 (후보의 항목 수 = 0)
목표 위치에 도착할 때까지 반복한다.
구현 : 경로 역추적
182
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0 1
1 2 2 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1
리스트의 인덱스 값
다음 위치 현재 위치
코드 작성
183
결과 확인
184
각 숫자는 지도의 칸 번호
이 순서대로 이동하면 목표 위치에 도착하는지 확인
구현 : 로봇 움직이기
185
이 값들만 바꾸면
임의의 위치에서
또 다른 임의의 위치로 이동함
다른 값으로 바꾸면서
제대로 길을 찾고 이동하는지
확인해 봅시다.햄스터 로봇의
초기 방향
구현 : 로봇 움직이기
186
구현 : 로봇 움직이기
187
수고하셨습니다.
akaii@kw.ac.kr
http://hamster.school

Contenu connexe

Tendances

자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서KimChangHoen
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdolsseungdols
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Jae-yeol Lee
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Suhyun Park
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpKimjeongmoo
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석jaypi Ko
 
확통 회귀분석
확통 회귀분석확통 회귀분석
확통 회귀분석jaypi Ko
 
이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5pkok15
 
딥러닝기본-신경망기초
딥러닝기본-신경망기초딥러닝기본-신경망기초
딥러닝기본-신경망기초jaypi Ko
 
[신경망기초] 신경망의시작-퍼셉트론
[신경망기초] 신경망의시작-퍼셉트론[신경망기초] 신경망의시작-퍼셉트론
[신경망기초] 신경망의시작-퍼셉트론jaypi Ko
 

Tendances (12)

자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석
 
확통 회귀분석
확통 회귀분석확통 회귀분석
확통 회귀분석
 
이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5
 
딥러닝기본-신경망기초
딥러닝기본-신경망기초딥러닝기본-신경망기초
딥러닝기본-신경망기초
 
이산수학05
이산수학05이산수학05
이산수학05
 
[신경망기초] 신경망의시작-퍼셉트론
[신경망기초] 신경망의시작-퍼셉트론[신경망기초] 신경망의시작-퍼셉트론
[신경망기초] 신경망의시작-퍼셉트론
 

Similaire à 알고리즘

120609 알고리즘 트레이닝 북 작은비숍
120609 알고리즘 트레이닝 북   작은비숍120609 알고리즘 트레이닝 북   작은비숍
120609 알고리즘 트레이닝 북 작은비숍tedypicker
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016Taehoon Kim
 
3.neural networks
3.neural networks3.neural networks
3.neural networksHaesun Park
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편Yong Joon Moon
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
Alphago at a Glance
Alphago at a GlanceAlphago at a Glance
Alphago at a GlanceDataya Nolja
 
RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기Woong won Lee
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1Haesun Park
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초Dongyi Kim
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regressionHaesun Park
 
Solvability of n-puzzle
Solvability of n-puzzleSolvability of n-puzzle
Solvability of n-puzzleGeunukCheong
 
Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sortHyun Jin Moon
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차Moonki Choi
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디대영 노
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)WON JOON YOO
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone ProgrammingYoung Oh Jeong
 
Pyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlabPyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlabIntae Cho
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기NAVER D2
 

Similaire à 알고리즘 (20)

120609 알고리즘 트레이닝 북 작은비숍
120609 알고리즘 트레이닝 북   작은비숍120609 알고리즘 트레이닝 북   작은비숍
120609 알고리즘 트레이닝 북 작은비숍
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
3.neural networks
3.neural networks3.neural networks
3.neural networks
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Alphago at a Glance
Alphago at a GlanceAlphago at a Glance
Alphago at a Glance
 
RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1
 
강화학습 큐러닝
강화학습 큐러닝강화학습 큐러닝
강화학습 큐러닝
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
Solvability of n-puzzle
Solvability of n-puzzleSolvability of n-puzzle
Solvability of n-puzzle
 
Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sort
 
자료구조02
자료구조02자료구조02
자료구조02
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone Programming
 
Pyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlabPyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlab
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
 

Plus de Kwang-Hyun Park

로봇이 소프트웨어를 만났을 때
로봇이 소프트웨어를 만났을 때로봇이 소프트웨어를 만났을 때
로봇이 소프트웨어를 만났을 때Kwang-Hyun Park
 
광주교대 연수 2016
광주교대 연수 2016광주교대 연수 2016
광주교대 연수 2016Kwang-Hyun Park
 
2016교육박람회 심화연수
2016교육박람회 심화연수2016교육박람회 심화연수
2016교육박람회 심화연수Kwang-Hyun Park
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)Kwang-Hyun Park
 
KERIS 실험학교 연수(기초과정
KERIS 실험학교 연수(기초과정KERIS 실험학교 연수(기초과정
KERIS 실험학교 연수(기초과정Kwang-Hyun Park
 
시흥매화중학교 강의자료
시흥매화중학교 강의자료시흥매화중학교 강의자료
시흥매화중학교 강의자료Kwang-Hyun Park
 

Plus de Kwang-Hyun Park (6)

로봇이 소프트웨어를 만났을 때
로봇이 소프트웨어를 만났을 때로봇이 소프트웨어를 만났을 때
로봇이 소프트웨어를 만났을 때
 
광주교대 연수 2016
광주교대 연수 2016광주교대 연수 2016
광주교대 연수 2016
 
2016교육박람회 심화연수
2016교육박람회 심화연수2016교육박람회 심화연수
2016교육박람회 심화연수
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
 
KERIS 실험학교 연수(기초과정
KERIS 실험학교 연수(기초과정KERIS 실험학교 연수(기초과정
KERIS 실험학교 연수(기초과정
 
시흥매화중학교 강의자료
시흥매화중학교 강의자료시흥매화중학교 강의자료
시흥매화중학교 강의자료
 

Dernier

코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.ultrasuperrok
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.ultrasuperrok
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111a01091282057
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다ultrasuperrok
 
TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)yonseilibrary
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료Seongwon Kim
 

Dernier (6)

코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 

알고리즘

  • 1. 1 이 수업은 선생님이 알고리즘을 어느 정도 이해하고 학생들을 가르치면 더 도움이 되지 않을까?라는 생각으로 하는 수업입니다. 학생들에게 가르치라는 것은 아닙니다. 주의 사항
  • 4. 알고리즘? 입력을 출력으로 변환하는 계산 절차 입출력 예시 (정렬 알고리즘) 입력: n개의 숫자로 구성된 시퀀스 𝑎1, 𝑎2, ⋯ , 𝑎 𝑛 출력: 𝑎1 ′ ≤ 𝑎2 ′ ≤ ⋯ ≤ 𝑎 𝑛 ′ 가 되도록 입력 시퀀스를 재정렬 한 𝑎1 ′ , 𝑎2 ′ , ⋯ , 𝑎 𝑛 ′ 4 입력 출력
  • 5. 알고리즘이 사용되는 곳 5 영상 통화 영상/음성 압축 알고리즘 내비게이션 경로 탐색 알고리즘 3D 그래픽스 렌더링 알고리즘 로봇 제어 알고리즘
  • 6. 알고리즘을 표현하는 방법 요구 사항 계산 절차가 정확하게 표현되어야 한다. 표현 방법 6 INSERTION-SORT(A) for j = 2 to A.length key = A[j] i = j – 1 while i > 0 and A[i] > key A[i+1]=A[i] i = i – 1 A[i+1] = key 순서도 의사 코드 프로그램 코드
  • 7. 좋은 알고리즘이란? 올바른 알고리즘 모든 입력에 대해 올바른 출력을 얻는다. (항상 올바른 알고리즘만 사용하는 것은 아님 : 허용 오차 범위) 효율성 계산 시간 (시간 복잡도) 메모리 (공간 복잡도) 7 제시간에 계산하지 못하면?
  • 8. 학교에 바라는 바 8 알고리즘 지식 • 사실상 암기 과목임 (이해를 바탕으로 하는) • 알고리즘 지식은 대학에 가서 배워도 됨 (올림피아드 나갈 것이 아니라면) • 일반 수업 : 몰라도 됨 • 동아리 : 한 가지 정도 경험해 보는 수준으로 알고리즘 구현 • 돌아만 가면 된다? 코드 대충 짜지 않기 (잘못된 습관은 나중에 고치기 어려움) • 결과 나왔다고 땡 하지 않기 • 더 좋은 코드를 작성할 수 있도록 고민하기 • 발표와 질문 많이 하기 지금 단계에서는 지식보다 효율적인 구현 중심으로~
  • 10. 정렬 알고리즘 • 버블 정렬 • 선택 정렬 (생략) • 삽입 정렬 • 병합 정렬 (설명만) • 퀵 정렬 (설명만) • 쉘 정렬 (생략) • 힙 정렬 • 버킷 정렬 (생략) • 팀 정렬 (소개만) • ... 10
  • 11. 데이터 셋 만들기 0 ~ 1000 사이의 난수 20개 생성 11 변수 리스트
  • 42. 구현 42 15 4 8 3 24 9 20 데이터 개수 : 7 1 2 3 4 5 6 7 1번째: j = 1~6 데이터[j], 데이터[j+1] 비교 2번째: j = 1~5 데이터[j], 데이터[j+1] 비교 3번째: j = 1~4 데이터[j], 데이터[j+1] 비교 4번째: j = 1~3 데이터[j], 데이터[j+1] 비교 5번째: j = 1~2 데이터[j], 데이터[j+1] 비교 6번째: j = 1~1 데이터[j], 데이터[j+1] 비교 i = (데이터 개수 - 1) ~ 1 j = 1 ~ i
  • 43. 구현 43 데이터 셋 만들기 i = (데이터 개수 – 1) ~ 1 j = 1 ~ i 데이터[j] > 데이터[j+1] 데이터[j]와 데이터[j+1] 맞바꾸기
  • 44. 버블 정렬 파이선 코드 44 def bubbleSort(x): for i in range(len(x)-1, 0, -1): for j in range(i): if x[j] > x[j+1]: x[j], x[j+1] = x[j+1], x[j] return x def bubbleSort(x): length = len(x)-1 for i in range(length): for j in range(length-i): if x[j] > x[j+1]: x[j], x[j+1] = x[j+1], x[j] return x 또는
  • 45. 버블 정렬 파이선 코드 45 def bubbleSort(x): for i in range(len(x)-1, 0, -1): quit = True for j in range(i): if x[j] > x[j+1]: x[j], x[j+1] = x[j+1], x[j] quit = False if quit: break return x
  • 61. 구현 61 15 4 8 3 24 9 20 1 2 3 4 5 6 7 i = 2부터 시작 i = 2 ~ (데이터 개수)
  • 62. 구현 62 15 8 3 24 9 20 4 1 2 3 4 5 6 7 j = (i – 1)부터 시작해서 데이터[i]보다 큰 것들을 뒤로 민다. tmp = 데이터[i] j = (i-1) ~ 1 데이터[j]가 tmp보다 크면 데이터[j+1] = 데이터[j]
  • 64. 구현 64 i = 2 ~ (데이터 개수) j = (1 – 1) ~ 1 tmp = 데이터[i] 데이터[j]가 tmp보다 크면 데이터[j+1] = 데이터[j] tmp 대입
  • 65. 삽입 정렬 파이선 코드 65 def insert_sort(x): for i in range(1, len(x)): j = i – 1 key = x[i] while x[j] > key and j >= 0: x[j+1] = x[j] j = j – 1 x[j+1] = key return x
  • 66. 병합 정렬 66 15 4 8 3 24 9 20 15 4 8 3 24 9 20 15 3 249 204 8 153 249 204 8 15 4 8 3 24 9 20 15 4 8 3 24 9 20 15 4 8 3 24 9 20 반씩 나눈다. 합치면서 정렬한다.
  • 67. 퀵 정렬 67 15 4 8 3 24 9 20 P j 피봇 값보다 작은 것은 왼쪽에 피봇 값보다 큰 것은 오른쪽에 둔다는 아이디어 i 1 2 3 4 5 6 7
  • 68. 퀵 정렬 68 15 4 8 3 24 9 20 P i j i <= j이고 i값 <= 피봇 값인 동안 이동 1 2 3 4 5 6 7
  • 69. 퀵 정렬 69 15 4 8 3 24 9 20 P i j 1 2 3 4 5 6 7 i <= j이고 j값 >= 피봇 값인 동안 이동
  • 70. 퀵 정렬 70 15 4 8 3 24 9 20 P i j 1 2 3 4 5 6 7 i와 j가 서로 지나치지 않았으면 값 맞교환
  • 71. 퀵 정렬 71 15 4 8 3 24 9 20 P i j 1 2 3 4 5 6 7 i <= j이고 i값 <= 피봇 값인 동안 이동
  • 72. 퀵 정렬 72 15 4 8 3 24 9 20 P ij 1 2 3 4 5 6 7 i <= j이고 j값 >= 피봇 값인 동안 이동
  • 73. 퀵 정렬 73 15 4 8 3 24 9 20 P ij 1 2 3 4 5 6 7 i와 j가 지나쳤으면 피봇과 j의 값, 인덱스 맞교환
  • 74. 퀵 정렬 74 15 4 8 3 24 9 20 P ij 1 2 3 4 5 6 7 i와 j가 지나쳤으면 피봇과 j의 값, 인덱스 맞교환
  • 75. 퀵 정렬 75 15 4 8 3 24 9 20 P 피봇 기준으로 나누어서 반복 i j P i j 1 2 3 4 5 6 7
  • 76. 퀵 정렬 76 15 4 8 3 24 9 20 P ij P ij 1 2 3 4 5 6 7 i <= j이고 i값 <= 피봇 값인 동안 이동
  • 77. 퀵 정렬 77 15 4 8 3 24 9 20 P j P j i <= j이고 j값 >= 피봇 값인 동안 이동 i i 1 2 3 4 5 6 7
  • 78. 퀵 정렬 78 15 4 8 3 24 9 20 P Pj ji i i와 j가 지나쳤으면 피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
  • 79. 퀵 정렬 79 15 4 8 3 24 9 20 P Pj ji i i와 j가 지나쳤으면 피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
  • 80. 퀵 정렬 80 15 4 8 3 24 9 20 P i j 피봇 기준으로 나누어서 반복 1 2 3 4 5 6 7
  • 81. 퀵 정렬 81 15 4 8 3 24 9 20 P i j i <= j이고 i값 <= 피봇 값인 동안 이동 1 2 3 4 5 6 7
  • 82. 퀵 정렬 82 15 4 8 3 24 9 20 P i i <= j이고 j값 >= 피봇 값인 동안 이동 j 1 2 3 4 5 6 7
  • 83. 퀵 정렬 83 15 4 8 3 24 9 20 P ij i와 j가 지나쳤으면 피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
  • 84. 퀵 정렬 84 15 4 8 3 24 9 20 P i j 피봇 기준으로 나누어서 반복 1 2 3 4 5 6 7
  • 85. 퀵 정렬 85 15 4 8 3 24 9 20 P i j i <= j이고 i값 <= 피봇 값인 동안 이동 1 2 3 4 5 6 7
  • 86. 퀵 정렬 86 15 4 8 3 24 9 20 P i i <= j이고 j값 >= 피봇 값인 동안 이동 j 1 2 3 4 5 6 7
  • 87. 퀵 정렬 87 15 4 8 3 24 9 20 P ij i와 j가 지나쳤으면 피봇과 j의 값, 인덱스 맞교환1 2 3 4 5 6 7
  • 88. 퀵 정렬 88 15 4 8 3 24 9 20 피봇 기준으로 나누어서 반복 1 2 3 4 5 6 7
  • 89. 퀵 정렬 파이선 코드 (첫 번째 방법) 89 def quicksort(x): if len(x) <= 1: return x pivot = x[len(x) // 2] less = [] more = [] equal = [] for a in x: if a < pivot: less.append(a) elif a > pivot: more.append(a) else: equal.append(a) return quicksort(less) + equal + quicksort(more) quicksort가 호출될 때마다 새로 만든다.
  • 90. 퀵 정렬 파이선 코드 (두 번째 방법) 90 def partition(x, start, end): pivot = x[start] left = start + 1 right = end done = False while not done: while left <= right and x[left] <= pivot: left += 1 while left <= right and pivot <= x[right]: right -= 1 if right < left: done = True else: x[left], x[right] = x[right], x[left] x[start], x[right] = x[right], x[start] return right
  • 91. 퀵 정렬 파이선 코드 (두 번째 방법) 91 def quick_sort(x, start, end): if start < end: pivot = partition(x, start, end) quick_sort(x, start, pivot - 1) quick_sort(x, pivot + 1, end) return x 리스트를 새로 만들지 않고 x의 인덱스만 달리하여 호출
  • 92. 팀(Tim) 정렬 – Tim Peters • 1993년 ACM-SIAM 심포지엄에서 Peter McIlroy가 발표한 기술 사용 • 2002년 Tim Peters가 파이선에서 사용하기 위해 구현 • 파이선 버전 2.3부터 표준 정렬 알고리즘으로 사용 • 자바 SE7, 안드로이드 등에서 사용 • 실제 데이터에서 가장 좋은 알고리즘으로 알려져 있음 • 파이선 구현: Tim Peters • 자바 구현: Josh Bloch 92
  • 93. 팀(Tim) 정렬 – Tim Peters • 데이터가 정렬된 정도에 따라 삽입 정렬과 병합 정렬 사이를 전환하는 적응형 알고리즘 – 삽입 정렬 Worst O(n2) Best O(n) Average O(n2) – 병합 정렬 Worst O(nlogn) Best O(nlogn) Average O(nlogn) – 팀 정렬 Worst O(nlogn) Best O(n) Average O(nlogn) – 퀵 정렬 Worst O(n2) Best O(n) ~ O(nlogn) Average O(nlogn) 93
  • 98. 이동 시간 표시  최단 경로 찾기 98 1 1 1 1 1 1 1 1 1 2 2 2 2 11111 2 2 2 2 2 1 3 3 3 3 3 3 3 3 2 2 2 1 4 4 4 4 5 10 34 6 2 3 44 2 6 7 3 4 4 4 10 10 10 5 1 4
  • 99. 그래프 표현 목적에 따라 여러 형태로 표현 가능 99 https://www.redblobgames.com
  • 100. 오늘의 문제 노드 간 이동 시간은 모두 1로 함 100
  • 101. 너비 우선 탐색 101 10G S 1 2 3 4 5 6 7 8 9 S G
  • 116. 구현 : 지도 만들기 116 1 리스트 만들기 (이름: 지도)
  • 117. 구현 : 지도 만들기 117 2 지도 데이터 입력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 바깥쪽 벽을 만들어 주면 더 좋아요! 각 칸을 구별하기 위한 인덱스 지도 데이터 (벽: 1, 길: 0)
  • 118. 구현 : 지도 만들기 118 2 지도 데이터 입력 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 항목 수를 70(지도의 전체 칸 수)으로 하여 데이터 입력 순서대로 입력
  • 119. 구현 : 지도 만들기 119 2 지도 데이터 입력 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 편의를 위해 변수 폭, 높이 추가함
  • 120. 구현 : 지도 만들기 120 2 지도 데이터 입력 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 또는 항목 수는 0으로 하고 코드를 작성하여 데이터 입력 편의를 위해 변수 폭, 높이 추가함 순서대로 입력 리스트를 만들 때 항목 수를 70으로 하여 데이터를 입력하거나 리스트는 항목 수 0으로 만들고 코드에서 데이터 70개를 추가하거나 둘 중 하나만
  • 121. 구현 : 지도 만들기 지도가 제대로 입력되었는지 확인해 봅시다. 121 그림 크기를 작게 줄이세요 적당한 간격으로 적당한 간격으로 적당한 초기 위치로 변수 추가
  • 122. 너비 우선 탐색 122 S 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록
  • 123. 너비 우선 탐색 123 S S 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록
  • 124. 너비 우선 탐색 124 53 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록
  • 125. 너비 우선 탐색 125 53 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53
  • 126. 너비 우선 탐색 126 53 53 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53
  • 127. 너비 우선 탐색 127 43 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53
  • 128. 너비 우선 탐색 128 43 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43
  • 129. 너비 우선 탐색 129 43 43 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43
  • 130. 너비 우선 탐색 130 33 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43
  • 131. 너비 우선 탐색 131 33 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33
  • 132. 너비 우선 탐색 132 33 33 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33
  • 133. 너비 우선 탐색 133 34 32 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33
  • 134. 너비 우선 탐색 134 3234 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34
  • 135. 너비 우선 탐색 135 3234 34 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34
  • 136. 너비 우선 탐색 136 32 35 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34
  • 137. 너비 우선 탐색 137 32 35 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35
  • 138. 너비 우선 탐색 138 32 35 32 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35
  • 139. 너비 우선 탐색 139 35 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 22 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35
  • 140. 너비 우선 탐색 140 35 22 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22
  • 141. 너비 우선 탐색 141 4522 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45
  • 142. 너비 우선 탐색 142 45 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 12 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12
  • 143. 너비 우선 탐색 143 5512 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55
  • 144. 너비 우선 탐색 144 55 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 13 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13
  • 145. 너비 우선 탐색 145 5613 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56
  • 146. 너비 우선 탐색 146 56 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 14 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14
  • 147. 너비 우선 탐색 147 5714 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57
  • 148. 너비 우선 탐색 148 57 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 15 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15
  • 149. 너비 우선 탐색 149 4715 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47
  • 150. 너비 우선 탐색 150 47 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 16 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16
  • 151. 너비 우선 탐색 151 37 4816 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48
  • 152. 너비 우선 탐색 152 4837 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 17 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17
  • 153. 너비 우선 탐색 153 48 2717 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27
  • 154. 너비 우선 탐색 154 492717 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49
  • 155. 너비 우선 탐색 155 4927 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 18 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18
  • 156. 너비 우선 탐색 156 49 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18
  • 157. 너비 우선 탐색 157 593918 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59
  • 158. 너비 우선 탐색 158 G5939 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19
  • 159. 너비 우선 탐색 159 G59 29 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29
  • 160. 너비 우선 탐색 160 G 29 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29
  • 161. 너비 우선 탐색 161 G 29 G 12 13 14 15 16 17 18 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59S G 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29
  • 162. 경로 역추적 162 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 163. 경로 역추적 163 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 164. 경로 역추적 164 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 165. 경로 역추적 165 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 166. 경로 역추적 166 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 167. 경로 역추적 167 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 168. 경로 역추적 168 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 169. 경로 역추적 169 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 170. 경로 역추적 170 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 171. 경로 역추적 171 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 172. 경로 역추적 172 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 173. 경로 역추적 173 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 174. 경로 역추적 174 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 175. 경로 역추적 175 경로 기록 52  53 53  43 43  33 33  32 33  34 34  35 32  22 35  45 22  12 45  55 12  13 55  56 13  14 56  57 14  15 57  47 15  16 47  37 47  48 16  17 37  27 48  49 17  18 49  39 49  59 18  19 39  29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  • 176. 구현 : 초기화 176 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 52후보 출발지 추가 지나간 길 표시
  • 177. 구현 : 경로 찾기 177 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 52후보 52 후보에서 꺼낸다.
  • 178. 구현 : 경로 찾기 178 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 후보 주위의 4곳을 검사한다.
  • 179. 구현 : 경로 찾기 179 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 2 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 후보 길이 있으면 후보에 추가하고 지나간 길로 표시하고 경로를 기록한다. 주위 4곳의 위치가 입력됨 A B A B 53 A B
  • 180. 구현 : 경로 찾기 180 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 2 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 주위 4곳의 위치가 입력됨 길이 있으면 후보에 추가하고 지나간 길로 표시하고 경로를 기록한다. 리스트의 인덱스 값 다음 위치 현재 위치
  • 181. 구현 : 경로 찾기 181 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 2 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 후보 더 이상 길이 없거나 (후보의 항목 수 = 0) 목표 위치에 도착할 때까지 반복한다.
  • 182. 구현 : 경로 역추적 182 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 2 2 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 리스트의 인덱스 값 다음 위치 현재 위치
  • 184. 결과 확인 184 각 숫자는 지도의 칸 번호 이 순서대로 이동하면 목표 위치에 도착하는지 확인
  • 185. 구현 : 로봇 움직이기 185 이 값들만 바꾸면 임의의 위치에서 또 다른 임의의 위치로 이동함 다른 값으로 바꾸면서 제대로 길을 찾고 이동하는지 확인해 봅시다.햄스터 로봇의 초기 방향
  • 186. 구현 : 로봇 움직이기 186
  • 187. 구현 : 로봇 움직이기 187