[Python] 스택, 큐, 더블큐, 괄호 체크, 10진수 -> 2진수, 10진수 -> n진수
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
class Deque:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def add_front(self, item):
self.items.append(item)
def add_rear(self, item):
self.items.insert(0,item)
def remove_front(self):
return self.items.pop()
def remove_rear(self):
return self.items.pop(0)
def size(self):
return len(self.items)
def par_checker(symbol_string):
s = Stack()
balanced = True
i = 0
current = ""
while i < len(symbol_string) and balanced:
sym = symbol_string[i]
if sym in "({[":
s.push(sym)
else:
if s.is_empty():
balanced = False
else:
current = s.pop()
if not isMatched(current, sym):
balanced = False
i += 1
if balanced and s.is_empty():
return True
else:
return False
def isMatched(open, close) -> bool:
ol = "({["
cl = ")}]"
idx = ol.find(open)
return cl[idx] == close
def decToBi(n) -> str:
s = Stack()
while n :
if n % 2 == 1:
s.push(1)
else:
s.push(0)
n = n // 2
r = ""
while not s.is_empty():
r += str(s.pop())
return r
def decToBase(n, b) -> str:
s = Stack()
digits = "012345689ABCDEF"
while n:
s.push(n % b)
n = n // b
r = ""
while not s.is_empty():
r += digits[s.pop()]
return r
괄호체크, 10진수 n진수 변환 ----------------------------------------------------------------------