스택 3

[자료구조, 스택] BOJ 1874 스택 수열

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 해결 알고리즘 스택 수열에 맞게 출력해주는데 이 때, 스택의 맨 위에 있는 수가 주어진 수보다 크면 스택 수열이 될 수 없으므로 그것만 잘 판별해주자 소스 코드 #include using namespace std; int main(){ int cur_num = 1; int n; cin >> n; stack s;..

[스택] BOJ 1918 후위 표기식

www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net 문제 해결 알고리즘 1. 비연산자인지 연산자인지 구분한다. 2. 비연산자이면 바로 출력하고, 연산자일 때, '*' , '/', '+', '-'이면 가장 우선 순위가 높기 때문에 스택이 비어있지 않다는 전제하에 스택에 top에 자기보다 우선순위가 같거나 높은 연산자만 출력해준다. 그 후 스택에 삽입해준다. '('이면 그냥 스택에 삽입해준다. ')'이면 스택이 비어있지 않다는 전제 하에 '('가 나올 때까..

[자료구조, 스택] BOJ 9935 문자열 폭발

www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 문제 해결 알고리즘 1. 처음에 결과 문자열(result)에 주어진 문장을 넣는다. 2. 그 문장의 인덱스(idx)가 폭발 문자열(bomb)과 같고, 인덱스(idx)가 폭발 문자열의 길이보다 크거나 같다면 폭발 문자열(bomb)과 결과 문자열(result)의 일부분이 같은지 확인해준다. 3. 만약 같다면 폭발 문자열의 길이(B)만큼 인덱스(idx)에서 빼준다. 4. 인덱스(idx)의 길이가 0이면..