More Related Content More from Kwang-Hyun Park
More from Kwang-Hyun Park (6) 알고리즘1. 1
이 수업은
선생님이 알고리즘을 어느 정도 이해하고
학생들을 가르치면 더 도움이 되지 않을까?라는
생각으로 하는 수업입니다.
학생들에게 가르치라는 것은 아닙니다.
주의 사항
4. 알고리즘?
입력을 출력으로 변환하는 계산 절차
입출력 예시 (정렬 알고리즘)
입력: n개의 숫자로 구성된 시퀀스 𝑎1, 𝑎2, ⋯ , 𝑎 𝑛
출력: 𝑎1
′ ≤ 𝑎2
′ ≤ ⋯ ≤ 𝑎 𝑛
′ 가 되도록 입력 시퀀스를 재정렬
한
𝑎1
′ , 𝑎2
′ , ⋯ , 𝑎 𝑛
′
4
입력 출력
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
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
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
반씩 나눈다.
합치면서 정렬한다.
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
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
리스트의 인덱스 값
다음 위치 현재 위치
185. 구현 : 로봇 움직이기
185
이 값들만 바꾸면
임의의 위치에서
또 다른 임의의 위치로 이동함
다른 값으로 바꾸면서
제대로 길을 찾고 이동하는지
확인해 봅시다.햄스터 로봇의
초기 방향