[BOJ] 10845 큐
2018. 9. 11. 11:10
1. 문제링크
https://www.acmicpc.net/problem/10845
2. 해설
이 문제는 간단하게 큐를 구현하는 문제이다.
3. 소스코드
#include <iostream> using namespace std; class queue{ private: int q[10001]={0}; int head=0, tail=0; public: void push(int x){ q[tail++] = x; } void pop(){ head++; } int front(){ return q[head]; } int back(){ return q[tail-1]; } int size(){ return tail - head; } int empty(){ return (tail - head == 0) ? 1 : 0; } }; int main() { int t; queue q; scanf("%d", &t); while(t--){ char arr[10]={0}; scanf("%s", arr); if(arr[0] == 'p' && arr[1] == 'u'){ int x; scanf("%d", &x); q.push(x); } else if(arr[0] == 'p' && arr[1] == 'o'){ if(!q.empty()){ printf("%d\n", q.front()); q.pop(); } else{ printf("-1\n"); } } else if(arr[0] == 'f'){ if(!q.empty()){ printf("%d\n", q.front()); } else{ printf("-1\n"); } } else if(arr[0] == 'b'){ if(!q.empty()){ printf("%d\n", q.back()); } else{ printf("-1\n"); } } else if(arr[0] == 's'){ printf("%d\n", q.size()); } else{ printf("%d\n", q.empty()); } } return 0; }
4. 추가언급
push에서 그냥 head++ 만 해준 것은 head는 계속 증가하기만 하고, 줄어들지 않는다. 그리고 linear queue에서 head앞의 값들은 접근할 일이 전혀 없고, 할 필요도 없기 때문에, 초기화를 시켜주지 않았다.
'프로그래밍 > 문제풀이(boj)' 카테고리의 다른 글
[BOJ] 2229 조짜기 (0) | 2018.09.12 |
---|---|
[BOJ] 13398 연속합 2 (0) | 2018.09.12 |
[BOJ] 1697 숨바꼭질 (0) | 2018.09.11 |
[BOJ] 2096 내려가기 (0) | 2018.09.07 |
[BOJ] 1526 가장 큰 금민수 (0) | 2018.09.07 |