본문 바로가기

algorithm

백준 10845번 큐

https://www.acmicpc.net/problem/10845

 

아이디어:

1. STL queue의 사용법을 묻는 기본 문제

2. 큐가 비어있을 때의 예외처리

3. push 입력받고 int tmp; cin >> tmp; 처리하기

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main() {

	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int n;
	string str;
	queue<int> Q;
	cin >> n;
	
	while (n--) {
		cin >> str;

		if (str == "push") {
			int tmp;
			cin >> tmp;
			Q.push(tmp);
		}
		else if (str == "pop") {
			if (!Q.empty()) {
				cout << Q.front() << "\n";
				Q.pop();
			}
			else cout << -1 << "\n";
		}
		else if (str == "size") {
			cout << Q.size() << "\n";
		}
		else if (str == "empty") {
			cout << Q.empty() << "\n";
		}
		else if (str == "front") {
			if (!Q.empty()) cout << Q.front() << "\n";
			else cout << -1 << "\n";
		}
		else if (str == "back") {
			if (!Q.empty()) cout << Q.back() << "\n";
			else cout << -1 << "\n";
		}
	}

	return 0;

}

 

배열로 Queue 구현하고 STL 미사용

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int n, s, e;
int q[2000005];

int main() {

	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	string str;
	cin >> n;
	
	while (n--) {
		cin >> str;

		if (str == "push")
			cin >> q[e++];	
		else if (str == "pop")
			cout << (s == e ? -1 : q[s++]) << "\n";
		else if (str == "size")
			cout << e - s << "\n";
		else if (str == "empty")
			cout << (s == e) << "\n";
		else if (str == "front")
			cout << (s == e ? -1 : q[s]) << "\n";
		else if (str == "back")
			cout << (s == e ? -1 : q[e-1]) << "\n";
	}

	return 0;

}

'algorithm' 카테고리의 다른 글

  (0) 2025.03.30
백준 2164번 카드2  (0) 2025.03.29
  (0) 2025.03.29
백준 6549번 히스토그램에서 가장 큰 직사각형  (0) 2025.03.29
백준 3015번 오아시스 재결합  (0) 2025.03.23