https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
간단한 문제라 stl써서 간단히 구현하려했는데
의외로 막혔던문제
#include <stdio.h>
#include <queue>
#include <string.h>
std::queue<int> q;
char input[10] = {0};
int main(){
int n,t;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%s", input);
if(strcmp(input, "push") == 0){
scanf(" %d", &t);
q.push(t);
}
else if(strcmp(input, "pop") == 0){
if(q.size() == 0) puts("-1");
else{ printf("%d\n", q.front()); q.pop(); }
}
else if(strcmp(input, "size") == 0) printf("%d\n", q.size());
else if(strcmp(input, "empty") == 0) printf("%d\n", q.empty());
else if(strcmp(input, "front") == 0){
if(q.size() == 0) puts("-1");
else printf("%d\n", q.front());
}
else if(strcmp(input, "back") == 0){
if(q.size() == 0) puts("-1");
else printf("%d\n", q.back());
}
}
return 0;
}
front 와 back 부분 처리를 보면
큐에 아무것도 없을때 따로 처리시켜주는 부분을 만들었는데
이걸 몰라서 한참 해맸다
기본 테스트케이스에는 이게 없어서
따로 값 넣어보다 알아냄
ㅇㄴ 큐에 아무것도 없으면 비정상종료를 시키던가 아니면 0만 반환하던가 둘중하나를 해야지
왜 더미값을 반환시키게 했는지는 아직도 모르겠다.
반응형