728x90
반응형
728x90
🙆♂️ 원형 큐 class
"""
원형 큐 클래스 CQueue
def emt : 큐에 값이 없다면 True를 반환 있다면 False를 반환
def full : 큐가 포화상태라면 True를 반환 아니라면 False를 반환
def clear : 큐 초기화
def enqueue : 포화상태가 아니면서 알파벳 값(ch)만 추가
def dequeue : 공백상태가 아니라면 최전단값 반환하고 제거
def peek : 큐의 최전단값 반환
def size : 큐의 길이 반환
def display : 현재 큐 상태 출력
"""
MAX_SIZE = 100
class CQueue:
def __init__(self):
self.front=0
self.rear=0
self.items=[None] * MAX_SIZE
def emt(self):
return self.front==self.rear
def full(self):
return self.front == (self.rear+1)%MAX_SIZE
def clear(self):
self.front = self.rear
"""
enqueue(self,ch) : 입력
1. 포화상태 검사
2. rear 한칸 뒤로 이동
3. rear 맨뒤에 값 입력
"""
def enqueue(self,ch):
if not self.full():
self.rear = (self.rear+1)%MAX_SIZE
self.items[self.rear] = ch
"""
dequeue(self) : 출력
1. 공백상태인지 검사
2. front 한 칸 앞으로 이동
3. 삭제된 값 반환
"""
def dequeue(self):
if not self.emt():
self.front = (self.front+1)%MAX_SIZE
return self.items[self.front]
def peek(self):
if not self.emt():
return self.items[(self.front+1)%MAX_SIZE]
def size(self):
return abs(self.rear - self.front)
def display(self):
output = []
if self.front < self.rear:
output = self.items[self.front+1 : self.rear+1]
else:
output = self.items[self.front+1 : MAX_SIZE] + self.items[0:self.rear+1]
print(output)
🙋♂️ BFS 미로 탐색
"""
큐를 이용한 BFS 미로 탐색
"""
#미로 정의
maze = [[1,1,1,1,1,1],
['H',0,1,0,0,1],
[1,0,0,0,1,1],
[1,0,1,0,1,1],
[1,0,1,0,0,'X'],
[1,1,1,1,1,1]]
#미로 출력
def print_maze(maze):
print("=====MAZE=====")
for r in maze:
for p in r:
print(p, end=" ")
print()
print("==============")
road = CQueue()
road.enqueue( (0,1) )
print("Start : ")
while not road.emt():
here = road.dequeue()
print_maze(maze)
print(here,end=" >> \n")
x,y=here
if maze[y][x] == 'X':
break
else:
maze[y][x] = "v"
#탐색 알고리즘
if maze[y-1][x] in (0,'X'): #상
road.enqueue((x,y-1))
if maze[y+1][x] in (0,'X'): #하
road.enqueue((x,y+1))
if maze[y][x+1] in (0,'X'): #우
road.enqueue((x+1,y))
if maze[y][x-1] in (0,'X'): #좌
road.enqueue((x-1,y))
728x90
반응형
'코딩테스트 > 알고리즘&자료구조' 카테고리의 다른 글
[자료구조][파이썬으로 쉽게 풀어쓴 자료구조] 05 큐 문제풀기 (0) | 2022.10.25 |
---|---|
[자료구조] 큐 - 우선순위 큐를 활용한 미로 탐색 (0) | 2022.10.25 |
[자료구조] 큐 - 선형 큐, 원형 큐, 덱 (0) | 2022.10.25 |
[자료구조][파이썬으로 쉽게 풀어쓴 자료구조] 04 스택 문제풀기 (0) | 2022.10.24 |
[자료구조] 스택 - 미로 탐색 (0) | 2022.10.24 |