https://www.acmicpc.net/problem/10828
이번에는 스택을 간단하게 구현하는 문제입니다.
a[10001]이 배열, size가 스택의 크기입니다.
push함수는 a[size]에 값을 넣고 size를 1증가시킵니다.
즉 크기가 0일 때 push를 하게되면 a[0]에 데이터가 저장됩니다. 그리고 size를 1증가시켜 다음 push에는 a[1]에 저장이 됩니다.
pop함수는 push에서 size를 1증가시켜두었기 때문에 a[size-1]이 마지막에 저장된 값입니다. a[size-1]을 출력해 준 후 size를 1 감소시킵니다.
empty함수는 bool empty를 활용하여 size가 0이면 empty=true를 통해 스택이 비었는지를 확인합니다.
top 함수는 맨 위의 함수값을 출력만 해줍니다. a[size-1]을 출력하면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <iostream> #include <string> using namespace std; int main() { int a[10001] = { 0, }; int size = 0; bool empty = true; int n; cin >> n; string com; for (int i = 0; i < n; i++) { cin >> com; int num; if (com == "push") { cin >> num; a[size++] = num; empty = false; } else if (com == "pop") { if (empty) cout << "-1"<<'\n'; else { cout << a[size---1] << '\n'; if (size == 0) empty = true; } } else if (com == "top") { if (empty) cout << "-1" << '\n'; else { cout << a[size-1] << '\n'; }; } else if (com == "size") { cout << size << '\n'; } else if (com == "empty") { if (empty) cout << "1" << '\n'; else cout << "0" << '\n'; } } return 0; } | cs |