<< 문제 >>
https://www.acmicpc.net/problem/24511
재밌는건 해당하는 위치가 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 |
댓글 영역