Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 99클럽
- til
- 백준
- 코딩테스트 준비
- flutter getx
- 개발자취업
- 코딩테스트
- Python
- c++ 코테
- ML
- 오블완
- 티스토리챌린지
- 코테
- react
- Laravel
- DP
- 플러터
- C++
- 라라벨
- 뷰
- 코딩테스트준비
- vue
- 파이썬
- 개발자 취업
- 항해99
- 파이썬 코테
- 알고리즘
- 안드로이드
- Flutter
- 코테 파이썬
Archives
- Today
- Total
잡다로그
[C++/코테] 스택(Stack) 기초 본문
스택 Stack
- FILO 자료구조. 먼저 넣은 것이 가장 나중에 나온다. 프링글스 통처럼!
- 수식의 괄호 쌍, 전위/중위/후위 표기법(코테 X), DFS, Flood Fill 등에 활용된다.
스택의 성질
- 원소의 추가와 제거는 O(1)
- 제일 상단의 원소 확인이 O(1)
- 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능하다.
STL에서도 기능이 없지만, 배열을 이용해서 구현하면 가능하도록 만들 수는 있다.
스택의 구현
배열 또는 연결 리스트를 사용하여 구현할 수 있다.
배열로 구현 시,
- 원소를 담을 큰 배열 1개, 인덱스 저장 배열 1개 필요
- data[0]부터 저장
- pos: 다음 원소 삽입 위치. 즉 스택의 길이(원소의 수)
push함수
- pos가 가리키는 위치에 원소를 삽입한다.
- pos를 1 증가시킨다.
void push(int x){
dat[pos++] = x; // 연산을 하고 -> pos +1
}
pop 함수
- pos를 1 감소시킨다.
굳이 값을 변경(삭제)하는 연산을 수행하지 않아도 된다.
void pop(){
pos--;
}
top 함수
- pos 바로 밑(직전) 원소 출력
int top(){
return dat[pos-1];
}
STL Stack
- 주로 push, pop, top, empty, size 멤버 함수를 쓴다.
- 스택이 비어있을 때 pop이나 top을 호출하면 런타임 에러가 발생한다.
연습문제: 백준 10828 스택
* python으로 풀었습니다.
2023.11.08 - [Algorithm] - [Python/코테] 백준 10828 스택
[Python/코테] 백준 10828 스택
10828 스택 문제 및 조건 설명: https://www.acmicpc.net/problem/10828 import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): command = sys.stdin.readline().split() if (command[0] == "push"): stack.append(int(command[1])) # pos += 1 e
snowflower19.tistory.com
출처:
https://www.youtube.com/watch?v=0DsyCXIN7Wg
'Algorithm' 카테고리의 다른 글
| [C++/코테] 큐(queue) (0) | 2023.11.09 |
|---|---|
| [Python/코테] 백준 10845번 큐 (0) | 2023.11.09 |
| [Python/코테] 백준 10828 스택 (0) | 2023.11.08 |
| [Python/코테] 백준 2577번 숫자의 개수 (0) | 2023.11.08 |
| [Python/코테] 백준 28431 양말 짝 맞추기 (0) | 2023.11.08 |
Comments