자료구조5 희소다항식 계산 from LinkedList import LinkedList class Term : def __init__(self,coef,expo): self.coef = coef self.expo = expo class SparsePoly(LinkedList): def __init__(self): super().__init__ self.coef = [] #계수 self.expo = [] #지수 def degree(self): return self.expo[0] #최고차항의 차수는 리스트의 첫번째에! def read(self): #입력 inp1,inp2 = input("계수 차수 입력(종료:-1)").split() inp1 = float(inp1) inp2 = int(inp2) a = Term(inp1,inp2) s.. 2023. 10. 28. 피보나치 수열 구현(+매개 변수별 호출 빈도 측정) 구글링 해봐도 C언어로 구현된 부분만 있어서 급한대로 한 번 구현해봤는데, C언어는 함수 부분을 따로 만들어놓고 main() 안에서 구현해서 깔끔해 보이는데 파이썬으로는 익숙하지가 않아서 그냥 함수 분리시켜놓고 직접 함수를 호출하는 방법을 택했다. 출력부분이랑 매개변수 호출 빈도 계산 함수를 구분해시켜줘야할 것 같은데.. 나중에 다시 살펴볼 예정! 2023. 10. 22. 중위표기식->후위표기식 변환(Stack) (파이썬으로 작성) 전위표기식 --> 후위표기식 원리(스택 활용) #1. 입력된 중위표기 수식을 순서대로 하나씩 스캔 #2. 피연산자를 만나면 바로 (후위표기 수식으로) 출력 #3. 연산자를 만나면 어딘가에 저장(스택사용) from ArrayStack import Stack #연산자의 우선순위 계산 함수 def precedence (op) : if op == '(' or op == ')' : return 0 elif op=='+' or op =='-' : return 1 elif op=='*' or op =='/' : return 2 else : return -1 #중위표기 수식의 후위표기 변환 def Infix2Postfix(expr): s = Stack(100) output = [] #후위표기식 출력.. 2023. 10. 10. 배열로 구현된 스택(클래스) class ArrayStack : #스택의 생성자 def __init__(self, capacity) : self.capacity = capacity self.array = [None] * self.capacity self.top = -1 #스택의 연산들을 멤버 함수로 구현 def isEmpty(self) : return self.top == -1 def isFull(self) : return self.top == self.capacity-1 def push(self, e): if not self.isfull(): self.top += 1 self.array[self.top] = e else: pass def pop(self): if not self.isEmpty(): self.top -= 1 retur.. 2023. 10. 10. 배열을 이용한 스택(함수) (python으로 구현) # 스택의 데이터: 전역 변수 capacity = 10 #배열의 용량을 10으로 고정 array = [None] * capacity #스택의 요소들을 저장할 배열 top = -1#상단의 인덱스(공백상태(-1)로 초기화) #스택의 연산 : 일반 함수 def isEmpty() : if top == -1 : return True else : return False def isFull() : return top == capacity-1 def push(e): global top if not isFull() : top += 1 array[top] = e else: print("stack overflow") exit() def pop(): global top if not isEmpty():.. 2023. 10. 10. 이전 1 다음