Dolphins의 HelloWorld

[백준]Baekjoon10828(스택) 본문

Algorithm/baekjoon문제풀이

[백준]Baekjoon10828(스택)

돌핀's 2018. 6. 26. 13:49


이 문제는 순수하게 스택을 구현하는 문제이다.


이 블로그의 알고리즘 개념에 있는 것과 같이 직접 스택을 구현할 수도 있으나


빠른 시간안에 문제를 풀고자 할 때는 c++에서 제공하는 라이브러리를 이용하는것이 더 

효율적이다.


https://en.cppreference.com/w/cpp/container/stack


위의 사이트에서 stack 라이브러리가 제공하는 함수들과 정보들을 볼 수 있다.


아래의 코드는 stack 라이브러리를 활용한 코드이다.



#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main()
{
	int N; // 명령의 수 
	string s; //명령어를 받는 변수
	stack<int> stack; //스택 선언
	cin >> N;
	int num; //스택에 push할 수를 받는 변수
	while (N--) {
		cin >> s; //명령어 받기
		if (s == "push") { //명령어가 push인 경우
			cin >> num;
			stack.push(num);
		}
		else if (s == "pop") {
			if (stack.empty()) { //비어있는 경우에 -1 출력
				cout << -1 << '\n';
				continue;
			}
			cout << stack.top() << '\n'; //맨위의 정수를 출력하고
			stack.pop(); //맨 위의 수를 제거
		}
		else if (s == "size") { //명령어가 size인 경우
			cout << stack.size() << '\n';
		}
		else if (s == "empty") { //명령어가 empty인 경우
			stack.empty() ? cout << 1 << '\n' : cout << 0 << '\n';
		}
		else if (s == "top") { //명령어가 top인경우
			stack.empty() ? cout << -1 << '\n' : cout << stack.top() << '\n';
		}

	}
}

'Algorithm > baekjoon문제풀이' 카테고리의 다른 글

[백준]Baekjoon1966(Queue)  (0) 2018.06.28
[백준]Baekjoon10845(Queue)  (0) 2018.06.26
[백준]Baekjoon10823(String 활용)  (0) 2018.06.25
[백준]Baekjoon10820(String 활용)  (0) 2018.06.24
[백준]Baekjoon1152(String 활용)  (0) 2018.06.24
Comments