Stack

감자·2023년 8월 9일
0

CS기초

목록 보기
3/7
post-thumbnail

LIFO(last in first out)

  • LIFO란 마지막으로 insert된 요소가 먼저 나오는 것입니다.
  • 정해진 방향으로만 요소를 insert할 수 있고, top으로 정한 곳을 통해서만 접근 가능하며
  • 가장 최근에 insert된 요소가 top이 되는 구조입니다.

기본 작업

  • 요소 insert : push()
  • 요소 delete : pop()
  • 맨 위의 요소 반환 : top()
  • stack이 비어있으면 true, 그렇지 않으면 false 반환 : isEmpty()
  • stack의 크기 반환 : size()

시간복잡도

  • O(1) : push, pop 작업은 일정한 시간이 걸려 코테에서 자주 이용되는 메서드 중 하나입니다.

활용 예시

1) 웹 브라우저 방문기록

  • 뒤로 가기를 눌렀을 때, 가장 최근에 접속한 페이지가 나오는 예제입니다.

    history_stack = []
    
    # 페이지 방문
    history_stack.append('Home Page')
    history_stack.append('About Us')
    history_stack.append('Contact Us')
    
     # 뒤로 가기
      last_page = history_stack.pop()
      print(f"'{last_page}' 페이지에서 뒤로 가기")

2) 되돌리기(undo)

  • 가장 최근에 실행되었던 작업 취소하는 예제입니다.

    stack = []
    
    # 작업 실행
    stack.append('save')
    stack.append('delete')
    stack.append('edit')
    
    print("실행된 작업:", stack)
    
    # 가장 최근 작업 취소
    last_action = stack.pop()
    print(f"'{last_action}' 작업 취소됨")
    
    print("현재 스택 상태:", stack)
    

3) 단어 역순

  • 입력한 단어를 역순으로 표시하는 예제입니다.
word = "hello"
stack = []

# 각 문자를 스택에 추가
for char in word:
    stack.append(char)

# 역순으로 문자 꺼내기
reversed_word = ''
while stack:
    reversed_word += stack.pop()

print("역순 단어:", reversed_word)




그림 출처 :
https://isaaccomputerscience.org/concepts/dsa_datastruct_stack?examBoard=all&stage=all&topic=data_structures

참고 :
https://www.geeksforgeeks.org/difference-between-stack-and-queue-data-structures/
https://www.programiz.com/dsa/stack

profile
감자와 함께 떠나는 프로그래밍 여행

0개의 댓글

관련 채용 정보