Koder / 박성훈
article thumbnail
Published 2020. 10. 26. 22:24
백준 BOJ 10845 - 큐 알고리즘/백준 BOJ

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만 반환하던가 둘중하나를 해야지

왜 더미값을 반환시키게 했는지는 아직도 모르겠다.

반응형