get_max() 함수를 갖는 커스텀 Stack 클래스 만들기

yun·2024년 2월 19일
0

Python

목록 보기
9/13
  • stack은 push, pop, top 함수를 갖는다.
  • get_max() 함수 작성 시, 시간복잡도를 O(n)보다 낮게 하는 방식을 생각해 보자. => max값을 위한 변수를 하나 더 만들어야 한다.
  • assert로 유닛테스트를 실행하자.
class custom_stack:
    def __init__(self):
        self.stack = []
        self.max_stack = []
	
    def push(self, v):
        self.stack.append(v)
        if len(self.max_stack) == 0 or v > self.max_stack[-1]:
            self.max_stack.append(v)


    def pop(self):
        if self.stack[-1] in self.max_stack:
            self.max_stack.pop()
        self.stack.pop()
        
        
    def top(self):
        return self.stack[-1]
        
        
    def get_max(self):
        return self.max_stack[-1]


cs = custom_stack()

cs.push(1)
assert cs.stack==[1]

cs.push(2)
assert cs.stack==[1,2]

cs.push(3)
assert cs.stack==[1,2,3]

cs.pop()
assert cs.stack==[1,2]

assert cs.top()==2

assert cs.get_max()==2

0개의 댓글