티스토리 뷰
# Stack Implementation
class Stack(object):
def __init__(self):
self.items = []
def isEmpty(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)
s = Stack()
print(s.isEmpty())
s.push(1)
s.push('two')
print(s.peek())
print(s.size())
s.pop()
s.pop()
print(s.size())
# 결과
True
two
2
0
# Queue Implementation
class Queue(object):
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enquque(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
q = Queue()
print(q.size())
q.enquque(1)
q.enquque(2)
q.dequeue()
print(q.items)
# 결과
0
[2]
# Deque Implementation
class Deque(object):
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def addFront(self, item):
self.items.append(item)
def addRear(self, item):
self.items.insert(0, item)
def removeFront(self):
return self.items.pop()
def removeRear(self):
return self.items.pop(0)
def size(self):
return len(self.items)
d = Deque()
d.addFront('hello')
d.addRear('world')
print(d.size())
print(d.removeFront() + ' ' + d.removeRear())
# 결과
2
hello world
# Balanced Parentheses Check
def balance_check(s):
if len(s) % 2 != 0:
return False
opening = set('([{')
matches = set([('(', ')'), ('[', ']'), ('{', '}')] )
stack = []
for paren in s:
if paren in opening:
stack.append(paren)
else:
if len(stack) == 0:
return False
last_opening = stack.pop()
if (last_opening, paren) not in matches:
return False
return len(stack) == 0
print(balance_check('()[]'))
# 결과
True
# Queue using 2 Stacks
class Queue2Stacks(object):
def __init__(self):
self.in_stack = []
self.out_stack = []
def enqueue(self, item):
self.in_stack.append(item)
def dequeue(self):
if not self.out_stack:
while self.in_stack:
self.out_stack.append(self.in_stack.pop())
return self.out_stack.pop()
q = Queue2Stacks()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
o = q.dequeue()
print(o)
print(q.out_stack)
print(q.in_stack)
# 결과
1
[3, 2]
[]
# Singly Linked List Cycle Check
def cycle_check(node):
marker1 = node
marker2 = node
while marker2 != None and marker2.next_node != None:
marker1 = marker1.next_node
marker2 = marker2.next_node.next_node
if marker2 == marker1:
return True
return False
class Node(object):
def __init__(self, values):
self.value = value
self.next_node = None
# Linked List Reversal
class Node(object):
def __init__(self, value):
self.value = value
self.next_node = None
def reverse(head):
current = head
previous = None
next_node = None
while current:
next_node = current.next_node
current.next_node = previous
previous = current
current = next_node
return previous
a = Node(1)
b = Node(2)
c = Node(3)
d = Node(4)
a.next_node = b
b.next_node = c
c.next_node = d
print(a.next_node.value)
print(b.next_node.value)
print(c.next_node.value)
reverse(a)
print(b.next_node.value)
print(c.next_node.value)
print(d.next_node.value)
# 결과
2
3
4
1
2
3
# Representing a Tree
class BinaryTree(object):
def __init__(self, rootObj):
self.key = rootObj
self.leftChild = None
self.rightChild = None
def insertLeft(self, newNode):
if self.leftChild == None:
self.leftChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self, newNode):
if self.rightChild == None:
self.rightChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getRightChild(self):
return self.rightChild
def getLeftChild(self):
return self.leftChild
def setRootVal(self, obj):
self.key = obj
def getRoolVal(self):
return self.key
r = BinaryTree('a')
r.insertLeft('b')
o = r.getLeftChild().getRoolVal()
print(o)
# 결과
b
# deque supports both first-in, first-out (queue) &
# last-in, first-out (stack) behaviour
from collections import deque
from string import ascii_lowercase
def palindrome(sentence):
letters = deque()
for char in sentence:
char = char.lower()
# remove whilte space
if char in ascii_lowercase:
letters.append(char)
while len(letters) > 1:
if letters.popleft() != letters.pop():
return False
return True
o = palindrome("madam, i'm adam")
print(o)
# 결과
True
def balanced(expr):
groupings = {
')': '(',
']': '[',
'>': '<',
'}': '{'}
stack = []
for char in expr:
if char in groupings.values():
stack.append(char)
elif char in groupings:
if not stack or stack.pop() != groupings[char]:
return False
return not stack
o = balanced('()')
print(o)
o = balanced('())')
print(o)
# 결과
True
False
# heapq module
from random import randrange
# nums = [randrange(0, 100) for _ in range(10)]
nums = [20, 22, 33, 29, 24, 67, 81, 77, 64, 40]
from heapq import heapify
heapify(nums)
print(nums)
from heapq import heappush
heappush(nums, 55)
print(nums)
from heapq import nsmallest, nlargest
print(nlargest(3, nums), nsmallest(3, nums))
# 결과
[20, 22, 33, 29, 24, 67, 81, 77, 64, 40]
[20, 22, 33, 29, 24, 67, 81, 77, 64, 40, 55]
[81, 77, 67] [20, 22, 24]
# heapq module - heappop()
nums = [20, 22, 33, 29, 24, 67, 81, 77, 64, 40]
from heapq import heappop
while nums:
print(heappop(nums))
# 결과
20
22
24
29
33
40
64
67
77
81
- Total
- 410,766
- Today
- 35
- Yesterday
- 44
- 검은왕자
- www.skilledtesting.com Erkan..
- The Braidy Tester
- Hans Schaefer's home page
- systematic-testing.com
- Software Test & Performance..
- Professional Tester Magazine
- Pairwise Testing
- Methods & Tools - Providing..
- Model-Based Testing Home Page
- Dr. Dobb's Portal
- Jeff Offutt (Professor of So..
- Jeff Tian, Ph.D., P.E., Asso..
- Specialist Group in Software..
- StickyMinds.com
- Software QA/Test Resource Ce..
- AMERICAN SOCIETY FOR QUALITY
- Software Testing and Quality..
- Association for Software Tes..
- 다음 일본어 번역
- 네이버 일본어 번역
- 고재팬 일본어 번역
- The Software Engineering Res..
- QA Testing and Test Tools co..
- Information for people with..
- Testing Blog
- QASTREET.COM
- Bret Pettichord
- Tester Center
- I. M. Testy
- Glossary and Technical FAQs
- 위키독스
- Software Testing Mentor
- Martin Fowler's Bliki
- TestFocus
- Game Developers Blog
- smileson
- nihitk's blog
- The Test Management Guide
- Testing Foundations
- Grove Consultants
- 홍환민 페이지
- Free Video Tutorials about S..
- Sustainable Development
- 해리 로빈슨의 모델 기반 테스..
- 테스팅 써커스
- Home - Erik van Veenendaal
- URL metrics
- 소프트웨어 관리
- 경영학
- 자격증
- 소프트웨어 엔지니어링
- 소프트웨어 개발
- 추정
- 협업
- 경제
- 일정
- 평가모델
- Software Engineering
- 독서법
- 경영
- 책읽기
- 소프트웨어 테스트
- software testing
- 애자일