728x90
 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

www.acmicpc.net

명령의 수가 많을 경우 입출력하는데에 시간이 많이 들어서 시간초과가 될 수도 있으므로

cin.tie(NULL);
ios_base::sync_with_stdio(false);

이 코드를 써서 입출력 시간을 줄였다.

 

[C++] 백준 시간초과 문제 해결 입출력 속도 향상

cin과 count을 사용한다면 cin.tie(NULL); ios::sync_with_stdio(false) 이 코드를 추가해주면 속도가 향상된다.

breakcoding.tistory.com

코드 구현은 스택이 비었을 경우 예외처리 하는 것 말고는 내가 따로 할 것은 없었고 C++의 <stack>을 이용했다.

#include <iostream>
#include <stack>
#include <vector>
#include <string>
using namespace std;

int main() {
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);
	int n;
	cin >> n;
	stack<int> stack;
	for (int i = 0; i < n; i++) {
		string s;
		cin >> s;
		if (s == "push") {
			int operand;
			cin >> operand;
			stack.push(operand);
		}
		else if (s == "top") {
			if (!stack.empty())
				cout << stack.top() << '\n';
			else cout << -1 << '\n';
		}
		else if (s == "size") {
			cout << stack.size() << '\n';
		}
		else if (s == "empty") {
			cout << stack.empty() << '\n';
		}
		else if (s == "pop") {
			if (!stack.empty()) {
				cout << stack.top() << '\n';
				stack.pop();
			}
			else cout << -1 << '\n';
		}
	}
	return 0;
}
728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 1193번 분수찾기  (0) 2020.01.31
[백준] 2751번 수 정렬하기 2  (0) 2020.01.31
[백준] 10814번 나이순 정렬  (0) 2020.01.30
[백준] 1978번 소수 찾기  (0) 2020.01.30
[백준] 4673번 셀프 넘버  (0) 2020.01.30

+ Recent posts