반응형

c++ stack함수들을 이용해서 풀어 본 문제입니다.

여기서 구현 시 주의 할 점 몇가지를 정리해 봤습니다.

pop() return값이 void형태이어서 출력값이 없어서 top()으로 먼저 출력 후 pop()을 호출해야 합니다.

그리고 top()호출시 stack이 비워있을 경우 호출 시 segment fault발생하므로 stack이 비워있다면 -1을 출력하도록 예외 사항을 추가해 줘야 합니다. 

 

#include <iostream>
#include <stack>
#include <string.h>

using namespace std;


int main()
{
	char input[10];
	int val,count;
	stack<int> s;

	// input number
	cin >> count;

	for( int i = 0; i < count; i++ )
	{
		cin >> input;

		if ( !strcmp("push", input) ){
			cin >> val;
			s.push(val);
		}
		else if( !strcmp(input, "pop") ){
			if( !s.empty() )
			{
				cout << s.top() << endl;
			 	s.pop();
			}else{
				cout << "-1" << endl;
			}
		}
		else if( !strcmp(input, "size") ){
			cout << s.size() << endl;
		}
		else if( !strcmp(input, "empty") ){
			cout << s.empty() << endl;
		}
		else if( !strcmp(input, "top") ){
			if( !s.empty() )
				cout << s.top() << endl;
			else
				cout << "-1" << endl;
		}

	}

	return 0;
}
반응형

'Algorithm' 카테고리의 다른 글

[c++]baekjoon 9012  (0) 2021.04.04
[c++]baekjoon 10773  (0) 2021.04.04
[c++]baekjoon 4949  (0) 2021.04.03
[c++]stack 사용  (0) 2021.04.02
thread  (0) 2019.03.01

+ Recent posts