전체 글 153

16강: 우선순위 큐(Priority Queues)

강의 "우선순위 큐"는 선입선출 방식이 아닌 우선순위에 따라 큐에서 빠져나오는 방식입니다. 예시로는 운영체제의 CPU 스케줄러가 있습니다. 구현 1. 방식 선택 Enqueue 할 때 우선순위 순서를 유지 : 시간적으로 유리함 Dequeue 할 때 우선순위 높은 것을 선택 2. 자료구조 선택 배열 : 공간적으로 유리함 연결 리스트 : 시간적으로 유리함 16강 실습: ⭐ 효율성을 높이는 함수를 선택하는 문제! class PriorityQueue: def __init__(self): self.queue = DoublyLinkedList() def size(self): return self.queue.getLength() def isEmpty(self): return self.size() == 0 def enq..

15강: 환형 큐(Circular Queue)

강의 큐의 활용 자료를 생성하는 작업과 이용하는 작업이 비동기적으로(asychronously) 일어나는 경우 자료를 생성하는 작업과 이용하는 작업이 양쪽 여러 곳에서 일어나는 경우 자료를 처리하여 새로운 자료를 생성하고, 그 자료를 또 처리해야 하는 경우 "환형 큐"는 정해진 개수의 저장 공간을 빙 돌려가며 이용하는 자료구조 입니다. 나오는 부분을 front, 넣는 부분을 rear로 지정합니다. 큐가 가득 차면 더 이상 원소를 넣을 수 없기 때문에 길이를 기억해 두어야 합니다. 자료구조 구현 배열 : python의 리스트 매소드 이용 연결 리스트 : 양방향 연결 리스트 이용 연산 size() : 원소의 수 isEmpty() : 비어있는지 판단 isFull() : 꽉 차 있는지 판단 enqueue() : ..

14강: 큐(Queues)

강의 "큐"는 한 쪽 끝에서 밀어 넣고(인큐, enqueue) 반대쪽에서 꺼내는(디큐, dequeue) 선형 구조 입니다. 선입선출(FIFO) 형태로 대기줄과 같습니다. 자료구조 구현 배열 : python의 리스트 매소드 이용 연결 리스트 : 양방향 연결 리스트 이용 연산 size() : 원소의 수 isEmpty() : 비어있는지 판단 enqueue() : 원소 추가 dequeue() : 반환 및 제거 peek() : 반환 14강 실습: 양방향 연결 리스트로 구현하는 큐 ⭐ 값이 중요하기 때문에 self.data를 적절히 사용하는 것이 중요한 문제! class Node: def __init__(self, item): self.data = item self.prev = None self.next = Non..

13강: 후위 표기 수식 계산

강의 알고리즘 설계 1. 왼쪽부터 한 글자씩 읽기 2. 피연산자이면 push, 연산자면 pop 13강 실습: 후위표현 수식 계산 ⭐ 계산한 값을 다시 push해서 마지막까지 valStack에 값이 남도록 하는 문제! class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): return self.data.pop() def peek(self): return self.data[-1] def splitTokens(exprStr..

12강: 수식의 후위 표기

강의 중위 표기법 (infix notation) : 연산자가 피연산자들의 사이에 위치 후위 표기법 (postfix notation) : 연산자가 피연산자들의 뒤에 위치 알고리즘 설계 1. 연산자의 우선순위 설정 2. 왼쪽부터 한 글자씩 읽기 3. 열린 괄호는 push, 닫힌 괄호는 열린 괄호가 나올 때까지 pop 4. 수식을 끝까지 확인한 후 스택에 남은 연산자 모두 pop 12강 실습: 중위표현 수식 --> 후위표현 수식 ⭐ 힌트 : 스택에서 꺼내지 않고 peek()를 이용해 우선순위 비교하고 isEmpty() 이용하여 모두 pop! class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def ..

11강: 스택(Stacks)

강의 "스택"은 자료를 보관할 수 있는 선형 구조입니다. 후입선출 (LIFO) 구조입니다. 발생 가능한 오류 스택 언더플로우 : 비어있는 스택에서 원소를 꺼내려는 경우 스택 오버플로우 : 꽉 찬 스택에 원소를 넣으려는 경우 구현 방법 배열 : python의 리스트 매소드 이용 class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): return self.data.pop() def peek(self): return sel..