C언어

boj 백준 큐 10845번 한번에 통과! stl 짱이다..

mcdn 2020. 8. 12. 15:25
반응형
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;

int main(void)
{
	int n;
	int int_num;
	int _print = 0;
	char str[6]; // ~empty 5
	queue <int> que;

	cin >> n;

	for (int i = 0; i < n;i++)
	{
		cin >> str;
		if (strcmp(str, "push") == 0)
		{
			cin >> int_num;
			que.push(int_num);
			continue;
		}
		else if (strcmp(str, "pop") == 0)
		{
			if (que.empty())
				_print = -1;
			else
			{
				_print = que.front();
				que.pop();
			}
		}
		else if (strcmp(str, "front") == 0)
		{
			if (que.empty())
				_print = -1;
			else
			{
				_print = que.front();
			}
		}
		else if (strcmp(str, "back") == 0)
		{
			if (que.empty())
				_print = -1;
			else
			{
				_print = que.back();
			}
		}
		else if (strcmp(str, "size") == 0)
		{
			_print = que.size();
		}
		else if (strcmp(str, "empty") == 0)
		{
			if (que.empty())
				_print = 1;
			else
				_print = 0;
		}
		printf("%d\n", _print);
	}
	return (0);
}

저번엔 조금 복잡했다면

이번엔 좀 간단하게! 

 

queue stl쓰니가 넘 편하다ㅜㅜ 

 

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

struct Queue {
	int data[10001];
	int tail, head;
	Queue() :tail(0), head(0) {
		memset(data, 0, sizeof(data));
	}

	bool empty() {
		return tail == head ? true : false;
	}
	void push(int n) {
		data[tail++] = n;
	}
	void pop() {
		head++;
	}
	int front() {
		if (empty()) return -1;
		return data[head];
	}
	int back() {
		if (empty()) return -1;
		return data[tail - 1];
	}
	int size() {
		return tail - head;
	}
};

int main() {
	Queue Q;
	int n, x;
	int _print = 0;
	cin >> n;
	while (n--) {
		string cmd;
		cin >> cmd;
		if (cmd == "push") {
			cin >> x;
			Q.push(x);
			continue;
		}
		else if (cmd == "pop") {
			if (Q.empty()) _print = -1;
			else { _print = Q.front() ; Q.pop(); }
		}
		else if (cmd == "size") {
			_print = Q.size();
		}
		else if (cmd == "empty") {
			_print = Q.empty();
		}
		else if (cmd == "front") {
			_print = Q.front();
		}
		else {
			_print = Q.back();
		}
		cout << _print << "\n";
	}
	return 0;
}

 

이건 직접 구현한거 

완전 좋다... 

반응형