[BOJ알고리즘, C++]#18258_큐 2
BOJ 알고리즘 문제 풀이, 18258번 문제 큐 2
STL의 queue컨테이너를 활용하는 방법에 대해 알아보겠습니다.
Overview
- 문제
- 풀이
- 코드
#0. 문제
#1. 풀이
1. 큐
- 큐는 먼저 삽입된 데이터가 먼저 삭제되는 FIFO(First In First Out) 방식으로 동작하는 선형 자료구조입니다.
- 데이터 목록의 한쪽에서만(top) 접근이 가능한 스택과 달리, 큐는 데이터 목록의 양쪽 끝(front, back)에서 접근이 가능합니다.
- 삽입/제거의 위치와 방법이 제한된 유한 순차 리스트라는 점에서 스택과 동일하지만, 큐는 스택과 달리 push 한 데이터와 pop 한 데이터가 다릅니다!
- 큐는 그래프 자료구조의 BFS(너비 우선 탐색)에 활용되며, 작업들을 순차적으로 처리하거나, 멀티 스레드 환경에서 동기화를 위한 버퍼로 활용됩니다.
2. queue 컨테이너
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
// #1. 삽입
q.push(10);
q.push(20);
q.push(30);
// #2. 제거
q.pop();
// #3. 접근
cout << q.front() << '\n';
cout << q.back() << '\n';
// #4. 크기
cout << q.size() << '\n';
// #5. 비어있는지 체크
q.empty() ? cout << "empty" << '\n' : cout << "Not Empty" << '\n';
return 0;
}
#2. 코드
1. 코드
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
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 << q.front() << '\n';
q.pop();
}
else
{
cout << -1 << '\n';
}
}
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 << q.front() << '\n';
}
else
{
cout << -1 << '\n';
}
}
else
{
if(!q.empty())
{
cout << q.back() << '\n';
}
else
{
cout << -1 << '\n';
}
}
}
}
'문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글
[BOJ알고리즘, C++]#10866_덱, 선형 자료구조 (0) | 2023.06.22 |
---|---|
[BOJ알고리즘, C++]#1966_프린터 큐, 우선순위 큐, 큐 (0) | 2023.06.22 |
[BOJ알고리즘, C++]#1021_회전하는 큐, 선형 자료구조, 덱 (0) | 2023.06.16 |
[BOJ알고리즘, C++]#11866_요세푸스 문제0, 선형 자료구조, 큐 (0) | 2023.06.06 |
[BOJ알고리즘, C++]#2164_카드2, 선형 자료구조, 큐 (0) | 2023.06.06 |