..

스택(Stack)

스택-1

스택은 선입후출 알고리즘이다 (LIFO: Last In, First Out)

한쪽 끝(top)에서만 삽입(push)과 삭제(pop)이 일어난다

김치 냉장고에서 맨 아래 김치를 꺼내기 위해서

위의 김치를 꺼내듯이 스택도 마지막에 들어간 데이터부터 먼저 꺼내야 한다

코드 리뷰

class Stack:
    def __init__(self):
        self.data = []

    def push(self, x):
        self.data.append(x)

    def pop(self):
        return self.data.pop() if self.data else None

    def peek(self):
        return self.data[-1] if self.data else None

    def is_empty(self):
        return not self.data

Stack 클래스의 data가 데이터가 모여있는 리스트이다

push()를 하면 리스트에 값이 추가되고

pop()을 하면 맨 마지막 data가 나오게 된다

peek()는 맨 마지막의 data의 값을 볼 수 있다

is_empty()는 stack이 비었는지 확인 할 수 있다

시간 복잡도

연산 시간 복잡도 설명
push() O(1) 리스트 끝에 추가
pop() O(1) 리스트 끝에서 제거
peek() O(1) 마지막 요소 조회
검색 / 삭제 O(N) 특정 값을 검색하거나 중간 요소 제거 시