스택의 개념
- LIFO (Last In First Out) , 가장 최근에 들어간 원소가 가장 먼저 나오는 자료구조
- 코딩테스트에서 특정 문제가 스택 문제인 지 알아야 한다
- 스택은 "가장 최근에 들어온 원소"를 봐야할 때 사용
- 추후 DFS / 백트래킹에서 사용
- 스택은 "가장 최근에 들어온 원소"를 봐야할 때 사용
스택의 ADT (설계도)
- ADT (Abstract Data Type) : 추상 데이터 타입. 세부 사항을 숨기고 사용자에게 필요한 기능만 명시함
- push (삽입 연산) , pop (꺼내는 연산) , isFull (가득 찼는지 확인) , isEmpty (비었는지 확인) 와 같은 연산과 top ( 최근에 삽입한 데이터의 위치를 저장하는 변수) 을 정의
스택의 사용 예시
- 함수 호출 : 함수 호출 시 현재 함수의 실행 상태(context) 를 저장, 새로운 함수로 제어 이동
- 이전 페이지로 가기 : 페이지를 전환할 때 마다 스택에 push , 이전 페이지로 갈 때 pop
- 괄호 짝 맞추기
큐의 개념
- FIFO (First In First Out) , 가장 먼저 들어간 원소가 가장 먼저 나오는 자료구조
- 큐는 "들어온 순서대로" 나갈 때 사용한다.
- 추후 BFS 에서 사용
큐의 ADT
- push (삽입 연산) , pop (꺼내는 연산) , isFull (가득 찼는지 확인) , isEmpty (비었는지 확인) 와 같은 연산들과 front (가장 먼저 push 된 원소의 위치, 큐의 앞) , rear (가장 최근에 push 된 원소의 위치, 큐의 뒤) 변수를 정의
큐의 사용 예시
- 줄서기
- 요세푸스 문제
[참고 강의]
코딩테스트 합격자 되기 - C++ [ https://inf.run/t92e1 ]
'개발 > 코딩테스트 합격자 되기' 카테고리의 다른 글
[코딩테스트 합격자 되기 스터디] 9주차 - 동적 계획법 (2) | 2024.09.09 |
---|---|
[코딩테스트 합격자 되기 스터디] 8주차 - 정렬 (5) | 2024.09.08 |
[코딩테스트 합격자 되기 스터디] 5주차 - 집합 (1) | 2024.08.12 |
[코딩테스트 합격자 되기 스터디] 3주차 - 해시 (0) | 2024.07.29 |
[코딩테스트 합격자 되기 스터디] 1주차 - 시간복잡도 (0) | 2024.07.13 |