<< 문제 >>
https://www.acmicpc.net/problem/24511
24511번: queuestack
첫째 줄에 queuestack을 구성하는 자료구조의 개수 $N$이 주어진다. ($1 \leq N \leq 100\,000$) 둘째 줄에 길이 $N$의 수열 $A$가 주어진다. $i$번 자료구조가 큐라면 $A_i = 0$, 스택이라면 $A_i = 1$이다. 셋째 줄
www.acmicpc.net
재밌는건 해당하는 위치가 Queue 자료구조인 경우만 숫자가 움직인다.
나머지 숫자는 무시하고 Queue인 경우만 stack에 쌓는다.
또, 이후 입력되는 숫자는 queue에 쌓는다.
이후 수에 맞춰 stack의 숫자를 출력하고, 부족하다면 queue에 쌓인 숫자까지 순서대로 출력하면 된다.
<< 코드 >>
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
// data structure의 종류 확인
int dsList[n];
stack<int> st;
for(int i=0; i<n; i++){
cin >> dsList[i];
}
// Queue인 경우에만 stack에 쌓는다.
// Stack인 경우엔 바뀌지 않으니
int temp;
for(int i:dsList){
cin >> temp;
if(i==0){
st.push(temp);
}
}
// 뒤에 입력될 수를 queue에 담는다.
queue<int> q;
int m;
cin >> m;
for(int i=0; i<m; i++){
cin >> temp;
q.push(temp);
}
// stack에 있는 수 먼저 출력
while(!st.empty() && m != 0){
cout << st.top() << ' ';
st.pop();
m--;
}
// 모자르다면 q에 있는 수도 출력
if(m != 0){
for(int i=0; i<m; i++){
cout << q.front() << ' ';
q.pop();
}
}
}
<< 깃헙 >>
< 백준 BaekJoon : 1037번 약수 > C++ (0) | 2024.01.24 |
---|---|
< 백준 BaekJoon : 1037번 약수 > C++ (0) | 2024.01.24 |
< 백준 BaekJoon : 2346번 풍선 터뜨리기> C++ (0) | 2024.01.23 |
< 백준 BaekJoon : 28279번 덱 2> C++ (0) | 2024.01.23 |
< 백준 BaekJoon : 11866번 요세푸스 문제 0> C++ (0) | 2024.01.23 |
댓글 영역