본문 바로가기
Programming/C++ - 백준

[백준] 10845번 : 큐 (C++)

by 지구코드 2024. 3. 11.
반응형


문제


풀이

큐(Queue)은 FIFO(Last In First Out, 후입선출) 구조이다.

 

큐를 구현하기 위해 std::queue를 사용할 수 있다. 

스택과 비슷한 형태의 함수를 지원하지만, 의미와 동작은 다르게 정의되어 있다.

 

 

[백준] 10828번 : 스택 (C++)

문제 풀이 스택(Stack)은 LIFO(Last In First Out, 후입선출) 구조이다. 스택은 컨테이너의 한 쪽 끝에서만 데이터를 삽입하거나 삭제할 수 있다. 따라서, 한쪽 끝이 아닌 위치에 있는 데이터는 접근하거

jigoo-log.tistory.com

 

예를 들어, std::queue에서 pop()은 pop_front()를 의미한다.

만약, 단순히 양 끝에 있는 원소에 접근하고 싶다면 front(), back() 함수를 사용하면 된다.

 

아래는 std::queue를 사용하는 예제 코드이다.

 

// std::queue를 이용해 큐 구현

#include <queue>
std::queue<int> q;
q.push(1);
q.push(2;
q.push(3)
q.pop;

 


코드

#include <iostream>
#include <string>
#include <queue>

using namespace std;

int main() {
	int N, num;
	string str;
	queue<int> q;

	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> str;

		if (str == "push") {
			cin >> num;
			q.push(num);
		}
		else if (str == "pop") {
			if (q.empty()) {
				cout << "-1" << "\n";
			}
			else {
				cout << q.front() << "\n";
					q.pop();
			}
		}
		else if (str == "size") {
			cout << q.size() << "\n";
		}
		else if (str == "empty") {
			if (q.empty()) {
				cout << "1" << "\n";
			}
			else {
				cout << "0" << "\n";
			}
		}
		else if (str == "front") {
			if (q.empty()) {
				cout << "-1" << "\n";
			}
			else {
				cout << q.front() << "\n";
			}
		}
		else if (str == "back") {
			if (q.empty()) {
				cout << "-1" << "\n";
			}
			else {
				cout << q.back() << "\n";
			}
		}
	}
	return 0;
}

결과

반응형

댓글