[Python] Chapter4 : 스택과 큐

daymoon_·2022년 1월 5일
0
post-thumbnail

🔊 주의사항

책에 있는 실습과 내용을 똑같이 적으면 저작권 문제가 될 수도 있기 때문에 약간의 변형을 하여 작성하였습니다. (특히, 실습 코드)


🪄 맛보기

  • 스택(Stack)

    1. 푸시(push), 팝(pop)
    2. 꼭대기(top), 바닥(bottom)
  • 큐(Queue)

    1. 인큐(enqueue), 디큐(dequeue)
    2. 프런트(front), 리어(rear)

📚 04-1 스택이란?

스택(Stack) 알아보기

🔎 참고자료
잔재미코딩 대표적인 자료구조: 스택
wikipedia 스택

스택은 데이터를 임시 저장할 때 사용하는 자료구조이며 데이터 입/출력 순서는 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out)구조이다.

📒 주요 기능

  • 푸시(push) : 스택에 데이터를 넣는 작업
  • 팝(pop) : 스택에서 데이터를 꺼내는 작업

📒 용어 : 위치

  • 꼭대기(top) : 윗부분
  • 바닥(bottom) : 아랫부분

📒 입력 및 출력 순서

  1. 푸시한 데이터를 스택 꼭때기 차곡차곡 쌓는다.
  2. 팝을 할 경우 꼭대기에 있는 데이터를 먼저 꺼낸다.

📑 장점과 단점

장점단점
1. 구조 단순 & 구현 쉬움1. 데이터 최대 갯수(스택의 크기)를 정해야함
2. 데이터 저장 및 읽기 속도 빠름2. 저장 공간의 낭비 발생

예외처리의 기본 구조

🔎 참고자료
위드코딩 파이썬 예외처리 사용법 정리(Python Exception)
wikidocs 05-4 예외처리
python 3.10.1 문서 내장 예외
아무튼 워라밸 파이썬 예외처리 쉽게 이해하기

파이썬에서 프로그램을 실행하다 보면 오류가 발생하게 된다. 이러한 경우 예외 처리(Exception Handling)을 하게 되면 오류를 복구하여 프로그램이 실행되다가 중단되는 것을 피할 수 있게 도와준다.

즉, 예상치 못한 오류를 잡기 좋다.

# 예외 처리문
try:
  원래처리 ▶ 오류가 발생할 것 같은 코드
except:
  예외 포착과 처리 ▶ 오류가 발생하면 실행
else:
  예외 포착 없음 ▶ 예외 발생 없음
finally:
  마무리 ▶ 예외 상관없이 무조건 실행

raise 문을 통한 예외 처리

🔎 참고자료
위드코딩 파이썬 예외처리 사용법 정리(Python Exception)
wikidocs 05-4 예외처리 오류 일부러 발생시키기

raise문(raise statement)은 프로그램의 예외 처리를 강제로 발생시킨다.


📚 04-2 큐란?

큐(Queue) 알아보기

🔎 참고자료
정보통신기술용어해설 Queue
정보통신기술용허해성 FIFO
잔재미코딩 대표적인 자료구조: 큐
wikipedia 큐

스택과 같이 데이터를 임시 저장하는 구조이지만 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 FIFO(Firtst In Firtst Out)구조를 가진다.

📒 주요 기능

  • 인큐(enqueue) : 큐에서 데이터를 추가하는 작업
  • 디큐(dequeue) : 큐에서 데이터를 꺼내는 작업

📒 용어 : 위치

  • 프런트(front) : 데이터를 꺼내는 쪽
  • 리어(rear) : 데이터를 넣는 쪽

📒 입력 및 출력 순서

  1. 인큐한 데이터를 큐에 차곡차곡 쌓는다.
  2. 디큐를 할 경우 가장 먼저 들어간 데이터를 꺼낸다.

우선순위 큐(Queue)

인큐할 때는 데이터에 우선순위를 부여하여 추가하고, 디큐할 때 우선순위가 가장 높은 데이터를 꺼내는 방식이다.

링 버퍼 큐(Ring Buffer Queue)

디큐를 할 때 배열 안의 원소가 이동하지 안게 구현하는 것을 링 버퍼라고 한다.
원소 이동 없이 front와 rear의 값을 업데이트 하는 것만으로 인규와 디큐를 수행할 수 있다.

양방향 대기열 덱(Deque)의 구조

🔎 참고자료
Leon Pyton-데크(deque) 언제, 왜 사용해야 하는가?
[Python]파이썬, 왜 리스트대신 큐/ 데크 deque 를 쓸까?

덱(deque: double-ended queue)은 맨 앞과 맨 끝 양쪽에서 데이터를 모두 삽입 또는 삭제할 수 있는 자료구조이다. 큐와 스택을 합친 형태라고 생각하면 된다.

profile
미지의 공간🌙

0개의 댓글