백준 1874번 - Silver III
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
stack <int> s;
vector <char> v;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int cnt=1;
int i, n;
cin>>n;
for(i=0;i<n;i++){
int num;
cin>>num; // 원하는 수열 배열 값 입력하기
while(cnt<=num){
s.push(cnt);
cnt+=1;
v.push_back('+');
}
if(s.top()==num){
s.pop();
v.push_back('-');
}
else{
cout <<"NO"<<"\n";
return 0;
}
}
for(i=0;i<v.size();i++){
cout <<v[i]<<"\n";
}
}
Queue
:: 데이터를 일시적으로 쌓아놓은 자료구조. FIFO 구조
- 헤더 파일
#include <queue>
queue <int> q;
- 기본함수
push(), pop(), front(), back(), empty(), size()
백준 18258번 Silver IV
#include <iostream>
#include <queue>
using namespace std;
queue <int> q;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int i, n, num;
cin >>n;
string s;//명령어
for(i=0;i<n;i++){
cin>>s;
if(s=="push"){
cin>>num;
q.push(num);
}
else if(s=="pop"){
if(q.empty()){
cout<<"-1\n";
}else{
cout << q.front()<<"\n";
q.pop();
}
}else if(s=="size"){
cout << q.size()<<"\n";
}else if(s=="empty"){
if(q.empty()){
cout <<"1\n";
}else{
cout <<"0\n";
}
}else if(s=="front"){
if(!q.empty()){
cout << q.front() <<"\n";
}else{
cout <<"-1\n";
}
}else if(s=="back"){
if(!q.empty()){
cout << q.back()<<"\n";
}else{
cout <<"-1\n";
}
}
else
break;
}
return 0;
}
백준 2164번 - Silver IV
#include <iostream>
#include <queue>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, i;
cin>>n;
queue <int> q;
for(i=1;i<=n;i++){
q.push(i);
}
while(q.size()>1){
q.pop(); // 맨 앞 원소 삭제
q.push(q.front()); // 맨 뒤에 첫 값 추가
q.pop();
}
cout << q.front()<<"\n";
return 0;
}
'코딩 > C++' 카테고리의 다른 글
백준 정렬 모음집 - 1 (0) | 2022.05.16 |
---|---|
백준 - 큐, 우선순위 큐 (0) | 2022.04.27 |
C++ 알고리즘 - 백준 stack (0) | 2022.03.31 |
C++ 알고리즘 - 이진검색의 시간복잡도 (0) | 2022.03.29 |
C++ 알고리즘 - binary search, complexity (0) | 2022.03.26 |