Algorithm/Problem Solve

[백준 10828번] 스택

아네스 2020. 12. 13. 21:56
반응형

오 너무 간만에 class 써봐서 까먹었다..

그래도 보던것들이 있어서 그런지 검색없이 풀었음 ㅎㅎ

command함수는 없어도 됐는데, main문에 넣기 싫어서 class안에 집어넣었다.

#include <bits/stdc++.h>

using namespace std;

int N, M;
string s;

class stk {
private:
	size_t stkpointer;
	int ary[100001];
public:
	stk() {
		stkpointer = 0;
	}
	void command(string s)
	{
		if (s == "pop")
			this->pop();
		else if (s == "size")
			this->size();
		else if (s == "empty")
			this->empty();
		else if (s == "top")
			this->top();
	}
	void push(int a) {
		this->ary[stkpointer++] = a;
	}
	void pop() {
		if (this->stkpointer==0) cout << "-1" << '\n';
		else cout << this->ary[--stkpointer] << '\n';
	}
	void size() {
		cout << this->stkpointer << '\n';
	}
	void empty() {
		if (this->stkpointer == 0) {
			cout << '1' << '\n';
		}
		else {
			cout << '0' << '\n';
		}
	}
	void top() {
		if (this->stkpointer == 0) cout << "-1" << '\n';
		else cout << ary[this->stkpointer - 1] << '\n';
	}
};

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	cin >> N;
	stk s;
	for (int i = 0; i < N; i++)
	{
		string temp_s;
		cin >> temp_s;
		if (temp_s == "push") {
			int temp_i;
			cin >> temp_i;
			s.push(temp_i);
		}
		else {
			s.command(temp_s);
		}
	}


}
반응형