Notice
Recent Posts
Recent Comments
Link
궤도
[백준] 10828번 : 스택 본문
문제
본문
과거 자료구조 수업시간에 C로 스택을 하나하나 정성스레 구현하던 때가 떠오른다.
그때 C++을 잘 모르던 때인데 다행이라고 생각한다.
만약 알고 있었다면 한줄로 해결할 수 있는걸 하나하나 작성하느라 홧병이 나서 죽었을 테니까...
C++의 표준 템플릿 라이브러리(STL)중에는 스택이 있다.
그전에 스택이 뭔지 모를 수 있으니 간략히 설명하면 LIFO(Last In First Out) 형식의 자료구조이다.
이 문제는 스택의 기본 사용법을 배우는 그런 문제라고 볼 수 있겠다.
www.cplusplus.com/reference/stack/stack/?kw=stack
소스코드
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int N, num;
string input;
stack<int> stack;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> input;
if (input.compare("push") == 0) {
cin >> num;
stack.push(num);
} else if (input.compare("pop") == 0) {
if (stack.empty())
num = -1;
else {
num = stack.top();
stack.pop();
}
cout << num << '\n';
} else if (input.compare("size") == 0)
cout << stack.size() << '\n';
else if (input.compare("empty") == 0)
cout << stack.empty() << '\n';
else if (input.compare("top") == 0) {
if (stack.empty())
cout << -1 << '\n';
else {
cout << stack.top() << '\n';
}
}
}
}
전체 소스코드다.
추가적으로 간단하게 C++의 스택 사용법만 정리하겠다.
#include <stack> //스택을 사용하기 위한 헤더
stack<int> s //int형 스택 s선언
s.push(1) //스택 s에 1투입
s.pop() //스택 s에서 가장 위에 있는 값을 뺌
s.top() //스택 s에서 가장 위에 있는 값을 반환
s.size() //스택 s의 크기 반환
s.empty() //스택 s가 비어있는지 아닌지 확인
Comments