Notice
Recent Posts
Recent Comments
Link
푸잉이의 기술블로그
[알고리즘 스터디] 스택 (Stack) 큐 (Queue) 본문
스택(Stack), LIFO(Last In First Out)
쌓아 올리다
Top을 통해 삽입하는 연산 'push'
Top을 통한 삭제하는 연산 'pop'
-> 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다.
활용 예시
- 웹브라우저 방문기록 (뒤로가기): 가장 나중에 열린 페이지부터 다시 보여준다
- 역순 문자열 만들기: 가장 나중에 입력된 문자부터 출력한다.
- 실행 취소(undo): 가장 나중에 실행된 것부터 실행을 취소한다.
- 후위 표기법 계산
- 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)
필요한 연산
- S.push(e): Top 에 새로운 요소 추가
- S.pop(): Top에 요소를 반환하면서 제거
- S.top(): Top에 요소를 제거하지 않고 반환
- S.is_empty(): 스택이 비어있으면 True를 반환
큐(Queue), (FIFO, First In First Out)
줄 서서 기다리는 것
한쪽 끝에서 삽입 다른 쪽 끝에선 삭제 작업
삭제 연산 수행 되는 곳 : 프론트 (Front), 삭제 연산을 deQueue
삽입 연산 수행 되는 곳: 리어 (Rear), 삽입 연산을 enQueue
활용 예시
- 주로 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황
- 우선순위가 같은 작업 예약 (프린터의 인쇄 대기열) : 가장 먼저 대기열에 오른 프린터가 먼저 출력됨
- 은행 업무 : 빠른 번호표를 가진 사람이 먼저 업무를 봄
- 콜센터 고객 대기시간
- 프로세스 관리
- 너비 우선 탐색 (BFS, Breadth-FIrst Search) 구현
- 캐시 (Cache) 구현
참조:
https://velog.io/@awesomeo184/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%8A%A4%ED%83%9D
'IT > Python' 카테고리의 다른 글
| [Python] 클래스(Class), 객체(Object), 인스턴스(Instance) (0) | 2023.08.05 |
|---|---|
| 선형 회귀/회귀/분류 개념 (0) | 2022.12.30 |
| [알고리즘 스터디] 해쉬 (Hash) (0) | 2022.11.28 |
| 알고리즘의 시간 복잡도, Big-O (0) | 2022.11.25 |
| [Python] 리스트, 튜플, 딕셔너리, set 정리 (0) | 2022.11.25 |
Comments