※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 24511번 문제인 queuestack이다.
문제는 아래 링크를 확인하자.
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
주어진 queuestack에서 새로운 원소를 삽입하면 이번에 거치는 자료구조가 스택인지 큐인지에 따라 어떤 일이 일어나게 될지 생각해보자.
스택을 거치면 자료를 삽입 후 삽입한 자료를 그대로 다시 꺼내므로 다음에 작업할 원소가 변하지 않는다.
큐를 거치면 자료를 삽입 후 원래 들어있던 자료를 꺼내게 된다.
따라서, 스택은 답에 영향을 미치지 않으므로 큐 위치만을 생각해도 문제를 해결할 수 있고, 따라서 큐만을 이어 하나의 큐를 이용하는 것으로 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <deque>
using namespace std;
deque<int> que;
bool arr[100000];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
for (int i = 0; i < N; i++) cin >> arr[i];
for (int i = 0; i < N; i++) {
int x; cin >> x;
if (arr[i]) continue;
que.push_back(x);
}
int M; cin >> M;
while (M--) {
int x; cin >> x;
que.push_front(x);
cout << que.back() << ' ';
que.pop_back();
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 24499 // C++] blobyum (0) | 2022.03.06 |
---|---|
[BOJ 24498 // C++] blobnom (0) | 2022.03.05 |
[BOJ 11658 // C++] 구간 합 구하기 3 (0) | 2022.03.03 |
[BOJ 24510 // C++] 시간복잡도를 배운 도도 (0) | 2022.03.02 |
[BOJ 1431 // C++] 시리얼 번호 (0) | 2022.03.01 |