※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts