본문 바로가기

개발 일기/자료구조

(9)
[Python] 우선순위 큐 (Priority Queue) class Node: def __init__(self, item): self.data = item self.prev = None self.next = None class DoublyLinkedList: def __init__(self): self.nodeCount = 0 self.head = Node(None) self.tail = Node(None) self.head.prev = None self.head.next = self.tail self.tail.prev = self.head self.tail.next = None def __repr__(self): if self.nodeCount == 0: return 'LinkedList: empty' s = '' curr = self.head while c..
[Python] 환형 큐 (Circular Queue) class CircularQueue: def __init__(self, n): self.maxCount = n self.data = [None] * n self.count = 0 self.front = -1 self.rear = -1 def size(self): return self.count def isEmpty(self): return self.count == 0 def isFull(self): return self.count == self.maxCount def enqueue(self, x): if self.isFull(): raise IndexError('Queue full') self.rear = (self.rear + 1) % self.maxCount self.data[self.rear] = ..
[Python] 큐 (Linked List Queue) class Node: def __init__(self, item): self.data = item self.prev = None self.next = None class DoublyLinkedList: def __init__(self): self.nodeCount = 0 self.head = Node(None) self.tail = Node(None) self.head.prev = None self.head.next = self.tail self.tail.prev = self.head self.tail.next = None def __repr__(self): if self.nodeCount == 0: return 'LinkedList: empty' s = '' curr = self.head while c..
[Python] 스택 (Stack) from doublylinkedlist import Node from doublylinkedlist import DoublyLinkedList 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] class LinkedListStack: def __init__(self): self.data = DoublyLin..
[Python] 양방향 연결 리스트 (Doubly Linked List) class Node: def __init__(self, item): self.data = item self.prev = None self.next = None class DoublyLinkedList: def __init__(self): self.nodeCount = 0 self.head = Node(None) self.tail = Node(None) self.head.prev = None self.head.next = self.tail self.tail.prev = self.head self.tail.next = None def traverse(self): result = [] curr = self.head while curr.next.next: curr = curr.next result.append(..
[Python] 연결 리스트2 (Linked List) class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def __init__(self): self.nodeCount = 0 self.head = Node(None) self.tail = None self.head.next = self.tail def traverse(self): result = [] curr = self.head while curr.next: curr = curr.next result.append(curr.data) return result def getAt(self, pos): if pos self.nodeCount: return None i = 0 curr..
[Python] 연결 리스트 (Linked List) class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def __init__(self): self.nodeCount = 0 self.head = None self.tail = None def getAt(self, pos): if pos self.nodeCount: return None i = 1 curr = self.head while i self.nodeCount + 1: return False if p..
[Python] 이진 탐색 (Binary Search) 반복문 사용 def solution(L, x): start = 0 end = len(L) - 1 while(start x : #{ end = mid - 1 #} else : #{ start = mid + 1 #} #} return -1 재귀문 사용 def solution(L, x, l, u): if l > u : return -1 mid = (l + u) // 2 if x == L[mid]: return mid elif x < L[mid]: return solution(L, x, l, mid-1) else: return solution(L, x, mid+1, u)
[Python] List 연산 List에 원소 추가하기 def solution(L, x): if x > L[-1] : #{ L.append(x) return L #} for i,l in enumerate(L) : #{ if l > x : #{ L.insert(i, x) break #} #} return L 리스트에서 원소 찾아내기 def solution(L, x): answer = [] if x not in L : return [-1] for i, l in enumerate(L) : #{ if l == x : answer.append(i) #} return answer