[21322][伯俊/BOJ]10828号スタック


質問する



にゅうしゅつりょく



に答える


STL stackと直接push,pop,top,size,emptyの2つの方法を用いて問題を解決した.

コード#コード#

  • STL stack
  • #include <bits/stdc++.h>
    using namespace std;
    
    int main(void)
    {
    	int n;
    	cin >> n;
    	stack<int> s;
    	
        while (n--)
    	{
    		string str;
    		cin >> str;
    
    		if (str == "push")
    		{
    			int num;
    			cin >> num;
    			s.push(num);
    		}
    		else if (str == "pop")
    		{
    			if (s.empty()) 
    				cout << -1 << '\n';
    			else 
    			{
    				cout << s.top() << '\n';
    				s.pop();
    			}
    		}
    		else if (str == "size")
    		{
    			cout << s.size() << '\n';
    		}
    		else if (str == "empty")
    		{
    			if (s.empty())
    				cout << 1 << '\n';
    			else
    				cout << 0 << '\n';
    		}
    		else if (str == "top")
    		{
    			if (s.empty())
    				cout << -1 << '\n';
    			else 
    				cout << s.top() << '\n';
    		}
    	}
    }
  • 直接実施
  • #include <bits/stdc++.h>
    using namespace std;
    
    const int MX = 1000005;
    int dat[MX];
    int pos = 0;
    
    void push(int x) 
    {
    	dat[pos++] = x;
    }
    
    void pop()
    {
    	if (pos == 0)
    		cout << -1 << '\n';
    	else
    	{
    		cout << dat[pos - 1] << '\n';
    		pos--;
    	}
    }
    
    void size()
    {
    	cout << pos << '\n';
    }
    
    void empty()
    {
    	if (pos == 0)
    		cout << 1 << '\n';
    	else
    		cout << 0 << '\n';
    }
    
    void top() 
    {
    	if (pos == 0)
    		cout << -1 << '\n';
    	else
    		cout <<  dat[pos - 1] << '\n';
    }
    
    int main(void)
    {
    	int n;
    	cin >> n;
    
    	while (n--)
    	{
    		string str;
    		cin >> str;
    
    		if (str == "push")
    		{
    			int num;
    			cin >> num;
    			push(num);
    		}
    		else if (str == "pop")
    			pop();
    		else if (str == "size")
    			size();
    		else if (str == "empty")
    			empty();
    		else if (str == "top")
    			top();
    	}
    }